Мне просто нужна помощь, чтобы заполнить веб-форму программно с помощью java . Я использую Apache HttpClient 4.0.1. Форма выглядит так:

HTML-код выглядит так:
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" <ol>Some tags</ol> <ol>
Do not show the ticket (pre)view when the user first comes to the "New Ticket" page.
Wait until they hit preview. Ticket Box (ticket fields along with description)</ol> <ol>form action="/tracenvir/newticket" method="post" id="propertyform"--div--input type="hidden" name="__FORM_TOKEN" value="dff95a43ddec5a653627d2c0"</ol>
<ol>input type="text" id="field-summary" name="field_summary" size="70"</ol> <ol>textarea id="field-description" name="field_description" class="wikitext" rows="10" cols="68"</ol> <ol>input type="hidden" name="field_status" value="new" </ol> <ol>
input type="submit" name="preview" value="Preview" </ol> <ol>
input type="submit" name="submit" value="Create ticket"</ol>
И есть много других тегов. Вот мой код Java:
DefaultHttpClient client = new DefaultHttpClient();
client.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BEST_MATCH);
client.setCookieStore(new BasicCookieStore());
//**LOG IN**//
//System.setProperty("javax.net.ssl.trustStore", "/home/rauch/NetBeansProjects/jssecacerts");
HttpGet login = new HttpGet("http://localhost:8000/tracenvir/login");
client.getCredentialsProvider().setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials("rauch", "qwerty"));
И тогда правильно войти ... Я получаю 200 ОК и все хорошо.
//**POST NewTicket**
HttpPost post = new HttpPost("http://localhost:8000/tracenvir/newticket");
List<NameValuePair> formparams = new ArrayList<NameValuePair>();
formparams.add(new BasicNameValuePair("__FORM_TOKEN", cookies.get(1).getValue()));
formparams.add(new BasicNameValuePair("field_summary", "Someerror"));
formparams.add(new BasicNameValuePair("field_descryption","AnyDescryption"));
formparams.add(new BasicNameValuePair("field_type", "defect"));
formparams.add(new BasicNameValuePair("field_priority", "major"));
formparams.add(new BasicNameValuePair("field_milestone", "milestone3"));
formparams.add(new BasicNameValuePair("field_component", "comp2"));
formparams.add(new BasicNameValuePair("field_version", "1.0"));
formparams.add(new BasicNameValuePair("field_keywords", ""));
formparams.add(new BasicNameValuePair("field_cc", ""));
formparams.add(new BasicNameValuePair("field_owner", "java server"));
formparams.add(new BasicNameValuePair("field_status", "new"));
formparams.add(new BasicNameValuePair("submit", "Create ticket"));
try {
UrlEncodedFormEntity entity;
entity = new UrlEncodedFormEntity(formparams, "UTF-8");
post.setEntity(entity);
post.addHeader("Referer","http://localhost:8000/tracenvir/newticket");
HttpResponse response = client.execute(post);
System.out.println("Create ticket: "+response.getStatusLine());
client.getConnectionManager().shutdown();
} catch(UnsupportedEncodingException ex) {
ex.printStackTrace();
} catch(IOException ex) {
ex.printStackTrace();
}
И ответы сервера HTTP / 1.0 200 OK . Но этот «Новый билет» не появляется на веб-странице ViewTickets. Если я делаю то же самое с обычным веб-браузером, заполните поля и нажмите кнопку «Создать заявку», все в порядке, и я могу увидеть этот NewTicket на веб-странице ViewTickets. Это то, что браузер генерирует запрос:
__FORM_TOKEN=0856803edd721d8b9592231d&field_summary=fuckingStatusField&field_description=mmm+status&field_type=defect&field_priority=major&field_milestone=milestone1&field_component=component1&field_version=2.0&field_keywords=&field_cc=&field_owner=ubuntu-server&field_status=new&submit=Create+ticket)</ol>
Почему это не работает? По умолчанию я не должен использовать это:
formparams.add(new BasicNameValuePair("__FORM_TOKEN", cookies.get(1).getValue()));</p>
<p>
DefaultHttpClient должен делать это, но это не так. Если я прокомментирую это утверждение, Сервер ответит
HTTP / 1.0 400 Bad Request
Что мне нужно сделать, чтобы правильно заполнить эту форму?
Я попытался имитировать браузер: сначала страница GET / newticket, а затем сгенерировать POST-запрос с заголовками, которые генерирует Browser ..... Но программно у меня есть 200 OK с сервера, но этот NewTicket не отображается в списке заявок .