2016-04-07 15 views
13

Sto utilizzando l'API fluente di HttpClient per fare una richiesta GET:fissaggio HttpClient avvertimento "non valido scade attributo" utilizzando API fluente

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

Ma per ogni richiesta ottengo il seguente avvertimento:

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 

Come posso risolvere questo problema e continuare a utilizzare l'interfaccia fluente? Idealmente vorrei un modo corretto per risolverlo, ma dal momento che non mi interessa davvero i cookie nel mio caso di utilizzo, qualsiasi soluzione che mi permetta di smettere di visualizzare gli avvertimenti (oltre a reindirizzare lo stderr, perché ne ho bisogno) è il benvenuto .

risposta

30

L'impostazione predefinita HttpClient ha difficoltà a comprendere gli header RFC-compliant.

Invece di nascondere l'avvertimento, basta passare ad una specifica standard biscotto come questo (HttpClient 4.4+):

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

risolto con:

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

È sufficiente notare che potrebbe essere necessaria una sintassi diversa a seconda della libreria di registrazione in uso. Vedi http://stackoverflow.com/questions/5188118/cant-turn-off-htmlunit-logging-messages per le alternative. – CfSimplicity

0

Se si desidera utilizzare HttpClientBuilder è possibile utilizzare il seguente sytax:

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