mam*_*meo 2 java httpurlconnection java-8 http2
我们正在维护一个当前在Java 8上运行的项目。现在,我们必须通过其api调用合作伙伴服务器,以将一些数据迁移到我们的数据库中。
当我们调用他们的服务器时,我们得到了一个例外:
原因:org.apache.http.ProtocolException:服务器无法使用有效的HTTP响应进行响应
在这种情况下,响应代码为-1。
所以我尝试使用curl从他们的服务器获取数据,我看到他们的响应状态行是:
HTTP / 2 200
虽然HttpURLConnection像这样检查:
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;
Run Code Online (Sandbox Code Playgroud)
因为这里的状态行是2,而不是1.,所以它无法读取和解析来自服务器的响应。
但是我们不能仅仅将Java升级到更高版本,因为它将需要进行大量测试以确保没有任何损坏,有人知道要在Java 8中解决此问题吗?
| 归档时间: |
|
| 查看次数: |
49 次 |
| 最近记录: |