mameo:
私たちは、今、私達が私達のデータベースにいくつかのデータを移行するために彼らのAPIを介してパートナーサーバを呼び出す必要があり、現在のJava 8で実行するプロジェクトを維持しています。
我々は彼らのサーバーを呼び出すとき、私たちは、例外が発生しました:
org.apache.http.ProtocolException:によって引き起こされるサーバーは、有効なHTTP応答で応答に失敗しました
この場合の応答コードは-1です。
彼らのサーバーからデータを取得するためにカールを使用しようと私は、彼らの応答のステータス行があることを私は見ました:
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;
ステータス行はここ2、ない1であるので、それは読んで、サーバーからの応答解析に失敗します。
それは確か何もブレークを作るために多くのテストが必要になりますようしかし、我々はちょうどそれ以上のバージョンに私たちのJavaをアップグレードすることはできません、誰もがJavaの8でこの問題を解決するために知っていますか?
ブライアンアグニュー:
あなたは利用することができHttpClientを5.0?(私は多少あなたのパートナーサービスが何らかの形でHTTP / 1.1へのダウングレードをサポートしていないことを驚いていることに注意してください?)このサポートHTTP / 2のJava 7で、上