得到错误请求#39;使用httpclient C#消费json web服务

时间:2015-04-02 23:04:39

标签: c# .net json

我收到了错误的StatusCode:400,ReasonPhrase:'Bad Request',代码如下。

string url = "http://1.1.1.1";
Object cu = new Object ();
HttpClient client = new HttpClient { BaseAddress = new Uri(url) };
var json = JsonConvert.SerializeObject(cu);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var content = new StringContent(JsonConvert.SerializeObject(cu), Encoding.UTF8, "application/json");
var response = client.PostAsJsonAsync("/api", content); //changed content from cu
var status = response.Result;

我注意到我的状态代码的Content-Type:仍然是text / html而不是application / json。

请协助。

注意:评论中提及的编辑代码。 此外,我能够通过以下jquery消费服务。但我需要C#代码才能工作。

    $.ajax({
         cache: false,
         type: "POST",
         async: true,
         url: RequestUrl,
         data: JSON.stringify(jData),
         contentType: "application/json",
         dataType: "json",
         success: function (result) {
             alert(result.ResultCode);
         },
         error: function (result) {
             alert('error' + result.responseText);
         }
     });

2 个答案:

答案 0 :(得分:0)

我刚试过你的代码,它实际上设置了正确的标题:

Accept: application/json
Content-Type: application/json; charset=utf-8

所以你的JSON可能有问题。您应该阅读端点的文档。在这种情况下使用Fiddler(优秀的HTTP客户端)也非常有用。

答案 1 :(得分:0)

您确定自己符合API的预期吗?您正在发送的JSON有效负载是:

{"Headers":[{"Key":"Content-Type","Value":["application/json; charset=utf-8"]}]}

发送有效载荷似乎有点奇怪。

我猜测你根本不符合API。它可能希望您发送任何内容或非常格式化的JSON对象,并且您不发送它想要的内容。因此,它以" Bad Request"因为请求不好(即格式不正确)。查看您要拨打的API的文档,确保您通过了预期的内容。

您确定服务需要响应POST而不是GET吗?