首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java8 HttpUrlConnection无法解析http协议2的响应

Java8 HttpUrlConnection无法解析http协议2的响应
EN

Stack Overflow用户
提问于 2019-06-25 11:16:28
回答 1查看 262关注 0票数 2

我们正在维护一个目前运行在java 8上的项目,现在我们必须通过他们的api调用一个合作伙伴服务器来将一些数据迁移到我们的数据库中。

当我们调用他们的服务器时,我们得到了一个例外:

由:org.apache.http.ProtocolException引起:服务器未能使用有效的HTTP进行响应

这种情况下的响应代码是-1。

因此,我尝试使用curl从他们的服务器获取数据,我看到他们的响应状态行是:

HTTP/2 200

当HttpURLConnection这样检查时:

代码语言:javascript
复制
    if (statusLine.startsWith("HTTP/1.")) {
        int codePos = statusLine.indexOf(' ');
        if (codePos > 0) {

            int phrasePos = statusLine.indexOf(' ', codePos+1);
            if (phrasePos > 0 && phrasePos < statusLine.length()) {
                responseMessage = statusLine.substring(phrasePos+1);
            }

            // deviation from RFC 2616 - don't reject status line
            // if SP Reason-Phrase is not included.
            if (phrasePos < 0)
                phrasePos = statusLine.length();

            try {
                responseCode = Integer.parseInt
                        (statusLine.substring(codePos+1, phrasePos));
                return responseCode;
            } catch (NumberFormatException e) { }
        }
    }
    return -1;

因为这里的状态行是2,而不是1,所以它无法从服务器读取和解析响应。

但是我们不能仅仅将我们的Java升级到更高的版本,因为它需要进行大量的测试才能确保没有中断,有人知道如何在java 8中修复这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-25 11:34:25

你能利用HttpClient 5.0吗?这在Java 7和更高版本上支持HTTP/2 (请注意,我对您的合作伙伴服务不支持某种形式的HTTP/1.x降级表示有点惊讶?)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56752853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档