Не могу найти правильный параметр для имитации формы веб-сайта на Java - PullRequest
1 голос
/ 05 октября 2011

Я новичок с исходным кодом веб-сайта и Java, я пытаюсь найти способ доступа к определенному сайту программно.Я разобрался в части входа в систему / аутентификации, но теперь я застрял в чем-то, что должно быть довольно простым.Мне нужно указать Java выбрать из списка опций, но я не могу понять, какие параметры отправить для следующего исходного кода:

<FORM ACTION="/services/reinforce" METHOD="POST" onSubmit="return checkSubmit()">
<INPUT TYPE="hidden" NAME="call1" VALUE="search">
<TABLE  CLASS="Data_table" summary="Select an option"width="100%"><CAPTION class="ctext">Search:    </CAPTION>
<TR>
<TD CLASS="default"><LABEL for=input_id><SPAN class=fvisible>Options</SPAN></LABEL>
<SELECT NAME="val_num" SIZE="1"  ID="optionId">
<OPTION VALUE="">None
<OPTION VALUE="1">Option 1
<OPTION VALUE="2">Option 2
<OPTION VALUE="3">Option 3
<OPTION VALUE="4">Option 4
<OPTION VALUE="5">Option 5
<OPTION VALUE="6">Option 6
<OPTION VALUE="7">Option 7
...

Например, если я хочу выбрать опцию 1, чтоЯ обычно делаю это

String data = URLEncoder.encode("val_num", "UTF-8") + "=" + URLEncoder.encode("1", "UTF-8"); 

Каким-то образом это работает, оно НЕ возвращает исключение FileNotFoundException, но перенаправляет меня на другую ссылку.Когда я делаю это вручную в любом браузере, он работает нормально и перенаправляет меня на Option1.Что может быть не так?

Ответы [ 2 ]

2 голосов
/ 05 октября 2011

Вы также отправляете параметр, соответствующий скрытому элементу ввода.

String data = "call1=search&val_num=1";

(Обратите внимание, что нет необходимости кодировать URL-адрес, если ясно видно, что строка содержит только безопасные для URL символы.)

Также я предполагаю, что вы передаете эту строку данных в POST-запрос (не GET-запрос). Это правильно?

1 голос
/ 05 октября 2011

Вот контрольный список:

  1. Вы делаете POST-запрос к /services/reinforce?
  2. Вносит ли функция JavaScript checkSubmit() какие-либо изменения в элементы формы input / select / textarea перед отправкой формы? Если это так, вам нужно смоделировать эти изменения в данных, которые вы отправляете с запросом POST. (Это может помочь отредактировать ваш вопрос и добавить источник функции checkSubmit().)
  3. Вы устанавливаете тип содержимого запроса на application/x-www-form-urlencoded?
  4. Отправляете ли вы соответствующую авторизацию? Обычно веб-сайты отправляют куки при успешной аутентификации. Вы отправляете правильный заголовок Cookie?
  5. Является ли data телом содержимого запроса POST?
  6. Вы также пытались отправить call1=search в теле? Возможно, скрытое поле также необходимо.
  7. Какой User-Agent заголовок вы отправляете?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...