Подтвердить что ты не робот

HttpClient ПРЕДУПРЕЖДЕНИЕ: Cookie отклонено: нелегальный атрибут домена

Я использую последнюю версию HttpClient (4.x). И сейчас я пытаюсь сделать запрос GET. Я просто отправляю запрос Get.

Это мой код;

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

Я просто делаю это красиво. Сначала

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

а второй -

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

ya, И только второй.... Я получил это сообщение об ошибке;

18 сентября 2011 г. 10:11:30 org.apache.http.client.protocol.ResponseProcessCookies processCookies ПРЕДУПРЕЖДЕНИЕ: Cookie отклонено: "[версия: 0] [имя: CookiePst] [значение: 0149 = xwGHF7HYDHLHQ84Isp/eSy9vu + Xq6cT12wxg1A ==] [домен:.mcore.com] [путь:/] [истечение: вс 18 сентября 10:38:59 ICT 2011]". Незаконный атрибут домена "mcore.com". Область происхождения: "goklik.co.id"

Я понял, что здесь используется Cookie. Но я не понимаю, что означает "Предупреждение". И я также не знаю, как его решить (Cookie не отвергается). HOpe есть немного света, чтобы очистить мой разум от вас, ребята....: D

4b9b3361

Ответ 1

Вы не можете "исправить" его. Сайт пытается установить cookie, который ему не разрешено устанавливать, и используемая вами клиентская библиотека apache сообщает вам об этом.

Он пытается установить cookie для mcore.com, когда домен goklik.co.id

Ответ 2

Возможно, слишком поздно, но у меня была такая же проблема, и я нашел кое-что, что помогло мне разобраться, просто установите Cookie Policy для совместимости с браузером:

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

Вот возможные значения:

Политика файлов cookie обеспечивает соответствующий интерфейс управления файлами cookie для определенного типа или версии файла cookie.

Спецификация RFC 2109 используется по умолчанию. Другие поддерживаемые спецификация может быть выбрана в случае необходимости или задана по умолчанию, когда желательно

Предоставляются следующие спецификации:

  • BROWSER_COMPATIBILITY: совместим с обычными методами управления файлами cookie (даже если они не соответствуют стандарту 100%).
  • NETSCAPE: черновик Netscape cookie соответствует
  • RFC_2109: совместим с RFC2109 (по умолчанию)
  • IGNORE_COOKIES: не автоматизировать обработку файлов cookie

Ответ 3

До httpclient 4.3, Jonathan Silva ответ остывает.

Но с httpclient 4.3, API, похоже, сильно изменился, после выполнения кода:

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

Ответ 4

Я использую http client 4.5.2, и это набор настроек cookie, чтобы легко решить мою проблему. Пример того, как клиентский экземпляр:

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

Ответ 5

Просто хочу улучшить ответ Эрика, поскольку он напрямую не разрешает мой сценарий, но изменение CookieSpecs на IGNORE_COOKIES решает мою проблему.

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

Потому что в моей версии HttpClient 4.5 CookieSpecs.BROWSER_COMPATIBILITY уже обесценивается.