HTTP POST и ОТВЕТ - PullRequest
       37

HTTP POST и ОТВЕТ

0 голосов
/ 03 ноября 2011
  1. Сайт: http://na.leagueoflegends.com/ladders/solo-5x5
  2. Поиск игрока (пример: Jaiybe)
  3. Вы будете перенаправлены (в данном случае: http://na.leagueoflegends.com/ladders/solo-5x5?highlight=28&page=1)
  4. Читать содержание

И я хочу сделать это в Java / Android.

  1. Я анализирую POST-запрос сайтов при поиске, результат:

    • op: Поиск
    • игрок: Jaiybe
    • ladder_id: 3
    • form_build_id: form-fff5e6e2569f1e15e5a5caf2a61c15e2
    • form_id: ladders_filter_form
  2. Создайте простую смесь HTTP POST и давайте прочитаем содержимое ...

КОД:

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://na.leagueoflegends.com/ladders/solo-5x5");

// Add your POST METHOD attributes
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("op", "Search"));
nameValuePairs.add(new BasicNameValuePair("player", Jaiybe));
nameValuePairs.add(new BasicNameValuePair("ladder_id", "3"));
nameValuePairs.add(new BasicNameValuePair("form_build_id","form-daca6fff89cedc352ccc3f533afa3804"));
nameValuePairs.add(new BasicNameValuePair("form_id","ladders_filter_form"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
responseBody = EntityUtils.toString(response.getEntity());
return responseBody;

И когда я запускаю его, я получаю какую-то автономную страницу ...

Число form_build_id - постоянно меняется, но это не было проблемой, использовать все тот же, а также Если я хотел бы "проверить", если это может быть проблемой, я понятия не имею, как бы я .. .

ИЛИ: Есть ли другой - БЫСТРЫЙ - способ, как получить те же результаты?

Что странно, так это то, что исходный код «ошибки», который я получаю на Android, отличается от того, как если бы я запускал его на моем ПК (Win7, Eclipse, Java) или в моем браузере. Как будто бы было две версии офлайн-сайтов - для мобильных и для ПК - но мой вопрос: как сервер узнает, что код работает на устройстве Android? Есть ли способ, как настроить это в HttpClient?

1 Ответ

1 голос
/ 03 ноября 2011
form_build_id:form-fff5e6e2569f1e15e5a5caf2a61c15e2

Это автоматически сгенерированный токен, действительный в течение определенного периода времени.Вероятно, это источник вашей проблемы и причина, по которой токен существует в первую очередь (для предотвращения пост-спама).

Поскольку этот токен не кажется основанным на сеансах, вы можете использовать HTTP Get на странице.который генерирует форму и анализирует сгенерированный токен каждый раз для вашей HTTP Post.

Об обнаружении ОС браузеры обычно предоставляют информацию об ОС, используя заголовок HTTP User-Agent.

...