问题:
我正在尝试使用 Bugzilla 的 REST API 从远程 Bugzilla 服务器访问数据。每当我等待来自 HttpClient.GetAsync
的响应时,这 exception被抛出。
我尝试了什么:
为了理解异常,我调查了以下 SO 问题和 GitHub 问题:
- Meaning of “The server returned an invalid or unrecognized response” in HttpClient
- The server returned an invalid or unrecognized response" error when ...
- HttpClient fails with "The server returned an invalid or unrecognized ...
核心代码:
下面代码的目的是获取位于 _url_version
的服务器的 Bugzilla 版本。例如,如果我设置 _url_version = "https://bugzilla.mozilla.org/rest/version"
,我会得到一个有效的 response。 .
// Get version, dummy test to ensure REST API is working via http requests
public async Task<string> GetVersion()
{
using (var client = new HttpClient())
{
HttpResponseMessage response = await client.GetAsync(_url_version);
string json = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<Rootobject>(json).version;
}
}
问题:
这个异常是什么意思?什么可能导致我的应用程序和远程 Bugzilla 服务器之间的通信中断?
最佳答案
在做了一些挖掘之后,我能够通过将 Bugzilla 更新到 5.0.4 来解决这个问题。
根本原因:
通过使用 Curl ,我能够手动检查来自 Http 响应 (here) 的 header 。异常是由响应中的噪声引起的:
Bugzilla.pm:sysread() 在 :utf8 句柄上已弃用。这将是位于 C:/... 的 Perl 5.30 中的 fatal error
出于某种原因,perl 模块的这个问题在服务器端得到回应。
解决方案:
根据Bugzilla 5.0.4 release notes ,问题已解决。我更新了我的 Bugzilla 安装,REST API 按预期工作。
希望这对外面的人有帮助!
关于c# - 是什么导致 HttpClient 中的 "WinHttpException: The server returned an invalid or unrecognized response"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49238135/