web-dev-qa-db-ja.com

Fluent APIを使用したHttpClient警告「Invalid expires attribute」の修正

HttpClientの流れるようなAPIを使用してGETリクエストを作成しています。

String jsonResult = Request.Get(requestUrl)
            .connectTimeout(2000)
            .socketTimeout(2000)
            .execute().returnContent().asString();

しかし、リクエストごとに次の警告が表示されます。

apr 07, 2016 12:26:46 PM org.Apache.http.client.protocol.ResponseProcessCookies processCookies
WARNING: Invalid cookie header: "Set-Cookie: WMF-Last-Access=07-Apr-2016;Path=/;HttpOnly;Expires=Mon, 09 May 2016 00:00:00 GMT". Invalid 'expires' attribute: Mon, 09 May 2016 00:00:00 GMT

これを修正して、流れるようなインターフェイスを使用し続けるにはどうすればよいですか?理想的にはそれを修正する適切な方法が必要ですが、ユースケースのCookieについてはあまり気にしないので、警告の表示を停止するだけのソリューション(stderrのリダイレクト以外に、それが必要です)は大歓迎です。

32
The Coding Monk

デフォルトのHttpClientでは、最新のRFC準拠ヘッダーを理解するのが困難です。

警告を非表示にする代わりに、次のような標準のCookie仕様に切り替えてください(HttpClient 4.4+):

    HttpClient httpClient = HttpClients.custom()
        .setDefaultRequestConfig(RequestConfig.custom()
            .setCookieSpec(CookieSpecs.STANDARD).build())
        .build();
74
rustyx

HttpClientBuilderを使用する場合は、次の構文を使用できます。

        HttpClient httpClient = HttpClientBuilder.create()
            .setDefaultRequestConfig(RequestConfig.custom()
                    .setCookieSpec(CookieSpecs.STANDARD).build()).build();
9
hnaderi

で解決:

System.setProperty("org.Apache.commons.logging.simplelog.log.org.Apache.http.client.protocol.ResponseProcessCookies", "fatal");
2
The Coding Monk