HttpClient ПРЕДУПРЕЖДЕНИЕ. Файл cookie отклонен: недопустимый атрибут домена - PullRequest
22 голосов
/ 18 сентября 2011

Я использую последнюю версию 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/");

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

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

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

Ответы [ 6 ]

24 голосов
/ 08 сентября 2012

Возможно, уже слишком поздно, но у меня возникла та же проблема, и я нашел кое-что, что помогло мне решить ее, просто установите Политика использования файлов cookie в Совместимость браузера:

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

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

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

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

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

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

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

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

12 голосов
/ 25 августа 2015

До 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,
1 голос
/ 25 февраля 2019

Вот самый простой способ подавить предупреждение в v4.5.x (сейчас 4.5.6):

HttpClientBuilder clientBuilder = HttpClientBuilder.create();
clientBuilder.disableCookieManagement();
HttpClient httpClient = clientBuilder.build();
1 голос
/ 12 сентября 2016

Я использую http-клиент 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();
0 голосов
/ 02 октября 2017

Просто хочу улучшить ответ Эрика, поскольку он не решает мой сценарий напрямую, но изменение 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 уже устарело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...