2011-09-18 8 views
19

Estoy utilizando la última versión de HttpClient (4.x). Y ahora estoy tratando de hacer una solicitud GET. Acabo de publicar una solicitud Get.HttpClient ADVERTENCIA: Cookie rechazada: atributo de dominio ilegal

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(); 
    } 
} 

que sólo hay que ejecutar muy bien. En primer lugar es

new Poster().test("http://123.xl.co.id/profile.php"); 

y la segunda es

new Poster().test("http://goklik.co.id/"); 

ya, y sólo el segundo uno .... Tengo este El mensaje de error;

18 de Sep, 2011 10:11:30 AM org.apache.http.client.protocol.ResponseProcessCookies processCookies ADVERTENCIA: Galleta rechazadas: "[versión: 0] [nombre: CookiePst] [valor: 0149 = xwGHF7HYDHLHQ84Isp/eSy9vu + Xq6cT12wxg1A ==] [dominio: .mcore.com] [ruta: /] [vencimiento: dom 18 de septiembre 10:38:59 ICT 2011] ". Ilegal atributo de dominio "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 rechaza la cookie). Hay un poco de luz para despejar mi mente de ustedes ...: D

Respuesta

16

No se puede "arreglar". El sitio está intentando establecer una cookie que no puede establecer y la biblioteca del cliente de apache que está utilizando le informa al respecto.

Se está tratando de establecer una cookie para mcore.com cuando el dominio está goklik.co.id

+0

hah ?? ¿¿Está usted seguro de eso?? OMG. pensé, desde el lado del cliente (mi lado), debería volver a crear mi cookie antes de dar otra solicitud GET (pasando a lo largo de la cookie) que utiliza mcore.com en lugar de la requerida goklik.co.id :( – gumuruh

+0

Estás Si utilizo un cliente, este se ajusta a los estándares adecuados. Si miro los JavaDocs para 'org.apache.http.client', no veo una manera de anular eso (las opciones disponibles org.apache.http.client.params.CookiePolicy son todas estándares compatibles). –

+0

Tengo el mismo problema, pero envié una solicitud al mismo sitio. ¿Qué quiere decir con "El sitio está intentando establecer una cookie que no está permitido establecer". ¿Por qué esto es un problema? En mi caso (el mismo sitio), ¿realmente no tengo manera de arreglar esto? – Jaskey

21

Tal vez sea demasiado tarde, pero tenía el mismo problema y he encontrado algo que me ayudó a trabajar a cabo, acaba de establecer la Cookie Policy a Compatibilidad del navegador:

httpclient.getParams().setParameter(ClientPNames.COOKIE_POLICY, 
     CookiePolicy.BROWSER_COMPATIBILITY); 

Éstos son los valores posibles:

La política de cookies ofrece entre otras la gestión correspondiente de galletas frace para un tipo dado o versión de cookie.

La especificación RFC 2109 se utiliza por defecto.La otra especificación soportado puede ser elegido cuando sea apropiado o un conjunto predeterminado cuando desear

Se proporcionan las siguientes especificaciones:

  • BROWSER_COMPATIBILITY: compatible con las prácticas de gestión de cookies común (incluso si no son 100 normas% compatible)
  • NETSCAPE: Netscape proyecto de galletas compatible
  • RFC_2109: RFC2109 compatible (por defecto)
  • IGNORE_COOKIES: no automcatically galletas proceso
+0

Esto no funciona para mí. ¿Hay algo más que pueda hacer? –

+6

Tuve el mismo problema pero como no estaba interesado en las cookies, configuré CookiePolicy. IGNORE_COOKIES y eso lo hizo por mí (con BROWSER_COMPATIBILITY lo guardé recibiendo el mensaje). –

+0

¿Qué significa este mensaje y qué significa CookiePolicy.BROWSER_COMPATIBILITY? – Jaskey

10

Antes httpclient 4.3, la respuesta Jonathan Silva 's es fresco.

Pero desdehttpclient 4.3, API parece haber cambiado mucho, 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, 
0

estoy usando cliente HTTP 4.5.2 y esto se establece especificaciones cookie para fácil resuelto mi problema. El ejemplo de cliente cómo instantiate:

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(); 
0

Sólo quieren mejorar la respuesta de Eric, ya que es imposible resolver directamente mi escenario pero cambiando CookieSpecs a IGNORE_COOKIES soluciona mi problema.

RequestConfig customizedRequestConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.IGNORE_COOKIES).build(); 
HttpClientBuilder customizedClientBuilder = 
HttpClients.custom().setDefaultRequestConfig(customizedRequestConfig); 
CloseableHttpClient client = customizedClientBuilder.build(); // customized client, 

Debido a que en mi versión de HttpClient 4,5 CookieSpecs.BROWSER_COMPATIBILITY ya se deprecia.

Cuestiones relacionadas