HttpClient の Fluent 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
これを修正して、Fluent インターフェースを使い続けるにはどうしたらよいでしょうか。理想的には、適切な方法で修正したいのですが、私の使用例では Cookie についてはあまり気にしていないので、警告の表示を停止できるソリューション (stderr のリダイレクトは必要ですが) であれば何でも歓迎します。
ベストアンサー1
デフォルトの HttpClient では、最新の RFC 準拠ヘッダーを理解するのが困難です。
警告を非表示にする代わりに、次のような標準の Cookie 仕様に切り替えます (HttpClient 4.4 以降)。
HttpClient httpClient = HttpClients.custom()
.setDefaultRequestConfig(RequestConfig.custom()
.setCookieSpec(CookieSpecs.STANDARD)
.build())
.build();