我正在尝试将 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/