【问题标题】:What causes "WinHttpException: The server returned an invalid or unrecognized response" in HttpClient?是什么导致 HttpClient 中出现“WinHttpException:服务器返回无效或无法识别的响应”?
【发布时间】:2018-03-12 14:50:00
【问题描述】:

问题:

我正在尝试使用 Bugzilla 的 REST API 从远程 Bugzilla 服务器访问数据。每当我等待来自HttpClient.GetAsync 的响应时,就会抛出这个exception

我的尝试:

为了理解异常,我调查了以下 SO 问题和 GitHub 问题:

核心代码:

以下代码的目的是获取位于_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 服务器之间的通信中断?

【问题讨论】:

标签: c# http asp.net-core-2.0


【解决方案1】:

在进行了一些挖掘之后,我能够通过将 Bugzilla 更新到 5.0.4 来解决这个问题。

根本原因:

通过使用Curl,我能够手动检查来自 Http 响应 (here) 的标头。异常是由响应中的噪音引起的:

Bugzilla.pm:sysread() 在 :utf8 句柄上已弃用。这将是 Perl 5.30 中 C:/...的致命错误。

由于某种原因,这个 perl 模块的问题在服务器端得到了回应。

解决方案:

根据Bugzilla 5.0.4 release notes,问题已解决。我更新了我的 Bugzilla 安装,REST API 按预期工作。

希望这对那里的人有帮助!

【讨论】:

    猜你喜欢
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多