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
Ответы
Ответ 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 уже обесценивается.