2016-04-07 8 views
13

„Ungültige Attribut abläuft“ Ich bin die fließend API von Httpclient verwenden, um eine GET-Anfrage zu machen:Fixing Httpclient Warnung mit fließend API

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

Aber für jede Anforderung ich die folgende Warnung erhalten:

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 

Wie kann ich das beheben und weiterhin die flüssige Schnittstelle verwenden? Idealerweise würde ich eine korrekte Lösung suchen, aber da mir die Cookies in meinem Anwendungsfall nicht wirklich wichtig sind, ist jede Lösung, die es mir erlaubt, die Warnungen nicht anzuzeigen (neben der Weiterleitung von stderr, weil ich das brauche), willkommen .

Antwort

30

Die Standard-Httpclient hat Schwierigkeiten, die aktuellen RFC-konformen Header zu verstehen.

Statt die Warnung des Versteckens, wechseln Sie einfach zu einem Standard-Cookie-Spezifikation wie folgt aus (Httpclient 4.4+):

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

mit Gelöst:

System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http.client.protocol.ResponseProcessCookies", "fatal"); 
+2

Nur um zu bemerken, dass Sie möglicherweise unterschiedliche Syntax abhängig davon benötigen, welche Protokollierungsbibliothek verwendet wird. Siehe http://stackoverflow.com/questions/5188118/cant-turn-off-htmlunit-logging-messages für Alternativen. – CfSimplicity

0

Wenn Sie HttpClientBuilder verwenden möchten, können Sie die folgende sytax verwenden:

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