C#jsonPOST请求400错误
C# json POST request 400 error
正在尝试使 json post 请求生效。根据错误响应,错误似乎与请求正文有关。似乎无法弄清楚原因。如果我通过 POSTMAN post 相同的请求正文字符串,我会得到成功响应。
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 Bad request.Unexpected 错误 json:消息实体不能为空。
如果我复制字符串 reqBody 并将其用作 Postman 中的正文,它就可以工作。
你能帮我解决我遗漏的问题吗?
您可以尝试这样的操作:
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进行序列化。
正在尝试使 json post 请求生效。根据错误响应,错误似乎与请求正文有关。似乎无法弄清楚原因。如果我通过 POSTMAN post 相同的请求正文字符串,我会得到成功响应。
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 Bad request.Unexpected 错误 json:消息实体不能为空。
如果我复制字符串 reqBody 并将其用作 Postman 中的正文,它就可以工作。 你能帮我解决我遗漏的问题吗?
您可以尝试这样的操作:
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进行序列化。