web-dev-qa-db-fra.com

Correction de l'avertissement HttpClient «Attribut d'expiration non valide» à l'aide de l'API courante

J'utilise l'API fluide de HttpClient pour faire une demande GET:

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

Mais pour chaque demande, je reçois l'avertissement suivant:

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

Comment puis-je résoudre ce problème et continuer à utiliser l'interface fluide? Idéalement, je voudrais un moyen correct de le corriger, mais comme je ne me soucie pas vraiment des cookies dans mon cas d'utilisation, toute solution qui me permet simplement d'arrêter d'afficher les avertissements (en plus de rediriger stderr, car j'en ai besoin) est la bienvenue .

32
The Coding Monk

Le HttpClient par défaut a du mal à comprendre les derniers en-têtes conformes à la RFC.

Au lieu de masquer l'avertissement, passez simplement à une spécification de cookie standard comme celle-ci (HttpClient 4.4+):

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

Si vous souhaitez utiliser HttpClientBuilder, vous pouvez utiliser la syntaxe suivante:

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

Résolu avec:

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