Я получаю доступ к одному веб-сайту (я скрываю имя сайта происхождения, поскольку оно противоречит политике) с помощью браузера и причала/apache httpclient.Jetty client http код ошибки 412
Веб-сайт отлично работает с веб-браузером.
Использование api Я могу зайти на сайт, получить файл cookie JSESSIONID и домашнюю страницу html. Но после этого, когда я отправляю любую форму или вызываю ссылки из html, я получаю код ошибки HTTP 412 (условие Pre failed failed).
Я понимаю, что эта ошибка вызвана проблемой в заголовке клиента. Я установил все заголовки из браузера (проверен с помощью элемента проверки в браузере Chrome). Тем не менее у меня такая же ошибка.
Я не могу отследить, какой заголовок вызывает проблему.
Здесь заголовок из браузера заголовков запроса
- Accept: Текст/HTML, приложение/XHTML + XML, приложение/XML; Q = 0,9, изображение/WebP, /; д = 0,8
- Accept-Encoding: GZIP, выкачать
- Accept-Language: EN-GB, EN-US; д = 0,8, ан; д = 0,6
- Cache-Control: макс возраста = 0
- соединения: поддержания активности
- Content-Length: 318
- Content-Type: применение/х-WWW-форм-urlencoded
- Cookie: язык = en_IN; __gads = J = 14c64d8f9fd7de54: Т = 1424658276: S = ALNI_Mba1kvJO4mLo7R-T2jUJE9zCYck5A; SLB_Cookie = ffffffff09461c2d45525d5f4f58455e445a4a422971; JSESSIONID = 36m4Oo6dCML_Wvx-Wgmm9rtLh9mbURxnZhWIVwg-zHaNzFQeUt9C -1989013783!; _ga = GA1.3.379900459.1428120216
- Ведущий: www.irctc.co.in
- Происхождение: https://www.example.com
- Referer: https://www.example.com/context/home
- Upgrade-небезопасной-запросов: 1
- User-Agent: Mozilla/5.0 (Windows NT 10,0; WOW64) AppleWebKit/537,36 (KHTML, как Gecko) Chrome/44.0.2403.157 Safari/537,36
же заголовок я устанавливаю от причала клиента.
Request request = httpClient.newRequest(url);
request.method(HttpMethod.POST);
request.agent(USER_AGENT);
request.accept("text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
request.header(HttpHeader.REFERER,"https://www.example.com/context/home");
request.header(HttpHeader.ACCEPT_ENCODING, "gzip, deflate");
request.header(HttpHeader.ACCEPT_LANGUAGE, "en-GB,en-US;q=0.8,en;q=0.6");
request.header(HttpHeader.CACHE_CONTROL, "max-age=0");
request.header(HttpHeader.CONNECTION, "keep-alive");
request.header(HttpHeader.CONTENT_TYPE, "application/x-www-form-urlencoded");
request.header(HttpHeader.HOST, "www.example.com);
for (Map.Entry<String, String> entry : params.entrySet()){
request.param(URLEncoder.encode(entry.getKey(), "UTF-8"), URLEncoder.encode(entry.getValue(), "UTF-8"));
if(!StringUtils.isEmpty(content)){
content+="&";
}
content+=URLEncoder.encode(entry.getKey(), "UTF-8")+"="+URLEncoder.encode(entry.getValue(), "UTF-8");
}
request.header(HttpHeader.CONTENT_LENGTH, ""+content.length());
Я вижу JSESSIONID и SLB_Cookie, присутствующие в запросе. Поскольку веб-сайт не контролируется, я действительно не могу понять, в чем проблема.
Пожалуйста, помогите мне решить эту проблему. Любые указатели на решение проблемы на стороне клиента оцениваются. есть ли способ, которым мы можем убедиться, какой заголовок вызывает эту проблему.
Похоже, что длина сообщения не требуется явно.Таким образом, это не похоже на длину содержимого – user2672763
. Я вижу, что эта проблема может быть с параметрами представлений JSF. Форма, которую я отправляю, содержит скрытый параметр javax.faces.ViewState. Если удалить этот параметр из представления, я получу ту же страницу в ответ. С этим параметром я получаю 412. Еще вопрос - это то же самое, что и подстрока формы, отлично работает с браузером, но не с причала/apache httpclient – user2672763