java - HttpClient ADVERTENCIA: Cookie rechazada: atributo de dominio ilegal
cookies warnings (5)
Antes de httpclient
4.3, la respuesta de Jonathan Silva
es genial.
Pero como httpclient
4.3, la API parece haber cambiado mucho, el siguiente código funcionaría:
RequestConfig customizedRequestConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.BROWSER_COMPATIBILITY).build();
HttpClientBuilder customizedClientBuilder = HttpClients.custom().setDefaultRequestConfig(customizedRequestConfig);
CloseableHttpClient client = customizedClientBuilder.build(); // customized client,
Estoy usando la última versión de HttpClient (4.x). Y ahora mismo estoy tratando de hacer una solicitud GET. Acabo de publicar una solicitud de obtención.
Este es mi Código;
public class Poster {
static boolean routing1 = true, routing2 = true;
static int counter1 = 0, counter2 = 0;
DefaultHttpClient oHtp = null;
HttpGet oHGet = null;
HttpResponse oHRes = null;
private void test(String fullAddress) throws Exception {
oHtp = new DefaultHttpClient();
oHGet = new HttpGet(fullAddress);
HttpResponse response = oHtp.execute(oHGet);
System.out.print(response.getStatusLine());
HttpEntity entity = response.getEntity();
if (entity != null) {
entity = new BufferedHttpEntity(entity);
// System.out.println(EntityUtils.toString(entity));
System.out.print("/t entity is retrieved... ");
}
oHtp.getConnectionManager().shutdown();
}
}
Solo lo ejecuto bien. Primero es
new Poster().test("http://123.xl.co.id/profile.php");
y segundo es
new Poster().test("http://goklik.co.id/");
ya, y solo el segundo ... Recibí este mensaje de error;
18 de septiembre de 2011 10:11:30 AM org.apache.http.client.protocol.ResponseProcessCookies processCookies ADVERTENCIA: Cookie rechazada: "[versión: 0] [nombre: CookiePst] [valor: 0149 = xwGFF7HYDHLHQ84Isp / eSy9vu + Xqqccccx ] [domain: .mcore.com] [path: /] [expiry: Sun Sep 18 10:38:59 ICT 2011] ". Atributo de dominio ilegal "mcore.com". Dominio de origen: "goklik.co.id"
Me di cuenta de que la cookie está involucrada aquí. Pero no entiendo lo que significa la Advertencia. Y tampoco sé cómo resolverlo (no se rechazan las cookies). Hola, hay un poco de luz para aclarar mi mente de ustedes ...: D
Estoy usando el cliente http 4.5.2 y esta es una especificación de cookies que resuelve fácilmente mi problema. El ejemplo de cómo instanciar cliente:
httpClient = HttpClients.custom()
.setDefaultRequestConfig(RequestConfig.custom()
// Waiting for a connection from connection manager
.setConnectionRequestTimeout(10000)
// Waiting for connection to establish
.setConnectTimeout(5000)
.setExpectContinueEnabled(false)
// Waiting for data
.setSocketTimeout(5000)
.setCookieSpec("easy")
.build())
.setMaxConnPerRoute(20)
.setMaxConnTotal(100)
.build();
No puedes "arreglarlo". El sitio está tratando de establecer una cookie que no está permitido configurar y la biblioteca del cliente de apache que está utilizando le informa sobre ello.
Está intentando establecer una cookie para mcore.com
cuando el dominio es goklik.co.id
Solo quiero mejorar la respuesta de Eric, ya que no resuelve directamente mi escenario, pero el cambio de CookieSpecs a IGNORE_COOKIES resuelve mi problema.
RequestConfig customizedRequestConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.IGNORE_COOKIES).build();
HttpClientBuilder customizedClientBuilder =
HttpClients.custom().setDefaultRequestConfig(customizedRequestConfig);
CloseableHttpClient client = customizedClientBuilder.build(); // customized client,
Porque en mi versión de HttpClient 4.5 CookieSpecs.BROWSER_COMPATIBILITY ya está depreciado.
Tal vez sea demasiado tarde, pero tuve el mismo problema y encontré algo que me ayudó a resolverlo, simplemente configure la Política de cookies para que sea compatible con el navegador:
httpclient.getParams().setParameter(ClientPNames.COOKIE_POLICY,
CookiePolicy.BROWSER_COMPATIBILITY);
Aquí están los valores posibles:
La política de cookies proporciona el interfrace de administración de cookies correspondiente para un tipo o versión determinada de cookie.
La especificación RFC 2109 se utiliza por defecto. Se pueden elegir otras especificaciones admitidas cuando sea apropiado o establecer un valor predeterminado cuando se desee
Se proporcionan las siguientes especificaciones:
BROWSER_COMPATIBILITY
: compatible con las prácticas comunes de administración de cookies (incluso si no cumplen con el 100% de los estándares)NETSCAPE
: compatible con el borrador de cookie de NetscapeRFC_2109
: compatible con RFC2109 (predeterminado)IGNORE_COOKIES
: no procesar automáticamente las cookies