C#json POST请求400错误
正在尝试使json post请求正常工作。根据错误响应,错误似乎与请求主体有关。我似乎想不出原因。如果我通过POSTMAN发布相同的请求正文字符串,我会得到一个成功的响应C#json POST请求400错误,c#,javascriptserializer,C#,Javascriptserializer,正在尝试使json post请求正常工作。根据错误响应,错误似乎与请求主体有关。我似乎想不出原因。如果我通过POSTMAN发布相同的请求正文字符串,我会得到一个成功的响应 var bodyData = new { id = "1234567", eventType = "create", userId = "account-70540" } var js = new JavaScriptSerializer(); string reqBody = js.Serialize(bodyData);
var bodyData = new
{
id = "1234567",
eventType = "create",
userId = "account-70540"
}
var js = new JavaScriptSerializer();
string reqBody = js.Serialize(bodyData);
在处理请求的部分中:
HttpWebRequest request = WebRequest.Create(reqUrl) as HttpWebRequest;
request.Method = "POST";
request.ContentType = "application/json";
request.Headers.Set("x-tracking-id", "12345");
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
最后一行触发异常,我得到一个400错误请求。解码json时出现意外错误:消息实体不能为空
如果我复制字符串reqBody并将其用作Postman中的body,它就会工作。
你能帮我做点什么吗?你可以试试这样的东西:
public static string PostJsonSync(string url, object obj) {
var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) {
var json = JsonConvert.SerializeObject(obj);
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) {
var result = streamReader.ReadToEnd();
return result;
}
}
*注意:它使用json.net进行序列化。我看不出您在哪里将reqBody附加到请求对象…@MindingData-非常感谢。我如此专注于请求主体,以至于我没有看到不将主体附加到请求上的基本错误。你真棒!非常感谢你的片段。非常感谢!