第二次调用 C# HttpClient 错误请求

Posted

技术标签:

【中文标题】第二次调用 C# HttpClient 错误请求【英文标题】:C# HttpClient Bad Request on second call 【发布时间】:2016-03-09 04:32:57 【问题描述】:

我发现,在任何第二个 httpclient 请求中,我总是收到 400 Bad Request。

我可以确认 API 调用确实有效并返回 200 - 所以如果我翻转它们,第一个调用将返回 200 第二个调用,即 400。

我不明白为什么会这样。

 using (HttpClient client = new HttpClient())
        
            client.BaseAddress = new Uri(BaseUrl);
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

            HttpResponseMessage blah = await client.GetAsync("api/subscriptions?account=eclipse&application=Sample");
            HttpResponseMessage dfds = await client.GetAsync("api/subscriptions?account=eclipse");
...

【问题讨论】:

您可以访问服务器吗?你能确认服务器没有因为请求太频繁而拒绝它吗? @Steve 不是这样,我可以毫无问题地调用 api,并且我已经尝试调试并在两个调用之间单步执行,但有一些滞后 - 结果相同。 【参考方案1】:

如果不查看您尝试调用的控制器功能,很难判断。可能发生的情况是 REST 服务在服务器上遇到异常并返回 400。

服务使用的是什么网络服务器?也许它有某种同时请求阻塞。您可以尝试不使用异步。

我要做的是打开 Fiddler (http://www.telerik.com/fiddler) 并查看网络流量。查看来自网络服务器的响应,看看那里是否有任何异常数据。

【讨论】:

谢谢,我安装了 fiddler,结果第二个调用返回 400,因为 "msg" : "Referer header doesn't match the white-list." 0

以上是关于第二次调用 C# HttpClient 错误请求的主要内容,如果未能解决你的问题,请参考以下文章

第二次对服务器的相同请求获得 403 Forbidden

PHP OAuth :: fetch()在第二次连续调用时返回错误请求

C# 中的 httpClient 调用超时,而 cUrl 正在工作

Angular httpClient https调用错误

修改每个请求的请求标头 C# HttpClient PCL

C# 使用 httpclient 发出 https 请求