Как создать интерактивный HttpClient с удаленным сервером, используя Java - PullRequest
0 голосов
/ 24 августа 2011

Мне нужно кодировать Http-клиент, используя Java, который взаимодействует с http-сервером с состоянием.Клиент должен

  1. перейти на страницу входа и принять куки
  2. отправить страницу входа с заполненным полем формы http
  3. выбрать товар и добавить в корзину
  4. отправить корзину покупок

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

HttpClient agent = new DefaultHttpClient();
agent.getParams().setParameter(ClientPNames.COOKIE_POLICY,
        CookiePolicy.RFC_2965);
CookieStore cookieStore = new BasicCookieStore();
HttpContext localContext = new BasicHttpContext();
localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
HttpGet httpget = new HttpGet(site);
HttpResponse response = agent.execute(httpget, localContext);
HttpEntity entity = response.getEntity();
entity.getContent().close();

HttpPost post = new HttpPost(site + "/login.aspx");
post.getParams().setParameter("LoginControl1$ctlLoginName", "myusername");
post.getParams().setParameter("LoginControl1$ctlPassword", "mypassword");
response = agent.execute(post, localContext);
entity = response.getEntity();
String s = IO.readContentAsString(entity.getContent());
System.out.println(s);

Есть идеи, где я не прав?Или у вас есть лучший способ реализовать это?

Большое спасибо Грин

1 Ответ

0 голосов
/ 24 августа 2011

Не совсем уверен, что может быть не так, но вы рассматривали возможность использования tcpdump / Wireshark для захвата необработанного HTTP-разговора с сервером и сравнения того, что вы отправляете / получаете в HTTPClient, с тем, что вы отправляете / получаете в своем веб-браузере, когдаВы отправляете форму?

...