c# - 将 JSON 数据传递给 REST POST 方法

标签 c# json rest post

我正在尝试将 JSON 数据(存在于文件中)传递给 JSON POST 方法。

但是收到 HTTP 400 错误(错误请求)-“远程服务器返回错误:(400) 错误请求。”

请帮忙。

接口(interface)-:

[OperationContract]
[WebInvoke(UriTemplate = "/JSON", Method = "POST")]
string CreatePersonFromJSONString(Person createPerson);

实现的功能-:

 public string CreatePersonFromJSONString(Person createPerson)
  {
     createPerson.ID = (++personCount).ToString();
     persons.Add(createPerson);
     return new JavaScriptSerializer().Serialize(createPerson);
  }

程序-:

 HttpWebRequest req = WebRequest.Create(uri) as HttpWebRequest;
 req.KeepAlive = false;
 req.Method = Method.ToUpper();

if (("POST,PUT").Split(',').Contains(Method.ToUpper()))
 {
   Console.WriteLine("Enter JSON FilePath:");
   string FilePath = Console.ReadLine();
   content = (File.OpenText(@FilePath)).ReadToEnd();

    req.ContentType = "application/json;";

    //initiate the request
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    var resToWrite = serializer.Deserialize<Person>(content);
    StreamWriter PostData = new StreamWriter(req.GetRequestStream());
    PostData.Write(resToWrite);
    PostData.Flush();
    PostData.Close();
}

  HttpWebResponse resp = req.GetResponse() as HttpWebResponse;

输入文件内容-:

{  "Age":"25",
       "ID":"4",
       "Name":"Ashish" 
    }

人物类-:

 [DataContract]
    public class Person
    {
        [DataMember]
        public string ID;
        [DataMember]
        public string Name;
        [DataMember]
        public string Age;
    }

Uri - http://localhost:5171/RestService/JSON

Method - POST

最佳答案

我不得不将数据写入更改为 Request Stream。 无需反序列化 JSON。

更改的程序部分-:

byte[] buffer = Encoding.ASCII.GetBytes(content);
req.ContentLength = buffer.Length;
Stream PostData = req.GetRequestStream();
PostData.Write(buffer, 0, buffer.Length);
PostData.Close();

关于c# - 将 JSON 数据传递给 REST POST 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37248620/

相关文章:

c# - 完全限定的类名有什么意义?

javascript - 当我使用 async/await 时,为什么会收到多个响应?

javascript - 获取 restify REST API 服务器以支持 HTTPS 和 HTTP

json - 如何将 Multipart 文件和 json 数据发送到 Spring Boot

c# - 测试 XML 文件中是否存在 XPath 的最佳方法?

C# 将 Table<T> 添加到现有 DataContext 实例中

c# - 存储库中添加和更新方法的特定实体对象

json - 公共(public)相册突然需要access_token

json - 将数据从 Node 传递到 Vuejs

jquery - MVC、JQUERY、AJAX、HTML 编码 JSON 响应