Javaの8 HttpURLConnectionのHTTPプロトコルで応答を解析するために失敗する2

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で、上

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=232262&siteId=1