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进行序列化。