gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 12:46:04 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com