Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Hedd
13 / 13 / 2
Регистрация: 21.01.2015
Сообщений: 131
#1

JSOUP POST. В ответ вместо JSon приходит разметка страницы с полями для ввода данных - Программирование Android

30.04.2015, 18:58. Просмотров 713. Ответов 5
Метки нет (Все метки)

Делаю пост запрос к апи сайта. Назад должен получить json, однако получаю разметку страницы с полями для ввода данных. Т.е. как будто запрос не выполняется, а игнорируется и код парсит страницу до запроса.
Что я делаю не так?

Мой код:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package com.example.hedd.jsoupposttest;
 
import android.os.AsyncTask;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
 
import org.jsoup.Connection;
import org.jsoup.helper.HttpConnection;
import org.jsoup.nodes.Document;
 
import java.io.IOException;
 
import butterknife.ButterKnife;
import butterknife.InjectView;
 
 
public class MainActivity extends ActionBarActivity {
 
    @InjectView(R.id.textView) TextView tvResult;
 
  //  public String t2 = "123";
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.inject(this);
 
        doJsoupPost();
 
    }
 
    void Jpost() {
        Document doc = null;
        try {
 
            String url = "http://mobile.travelata.ru/demo/v2/tours.php";
            String useragent = "Mozilla/5.0 (X11; Linux i686 (x86_64)) AppleWebKit/537.36 " +
                                 "(KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36";
            String headerlang = "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,uk;q=0.2";
            String headertype = "application/x-www-form-urlencoded";
            String key = "i1M0kS14qJnPnvZ6h2dHaEU9HQ6dBYcQNjCUn";
            String tourcriteria = "%7B%22departureCity%22%3A%222%22%2C%22touristGroup%22%3A%" +
                    "7B%22babies%22%3A0%2C%22adults%22%3A2%2C%22kids%22%3A0%7D%2C%22countries%" +
                    "22%3A%5B20%2C22%2C29%2C32%5D%2C%22nightRange%22%3A%7B%22to%22%3A15%2C%22from" +
                    "%22%3A5%7D%2C%22checkInDateRange%22%3A%7B%22to%22%3A8%2C%22type%22%3A%22" +
                    "CheckInDateRangeFlexible%22%2C%22from%22%3A2%7D%7D";
 
            // подключаемся к странице
            Connection connection1 = HttpConnection.connect(url)
                    .ignoreHttpErrors(true)
                    .userAgent(useragent);
            Connection.Response response1 = connection1.execute();
 
            // делаем POST запрос
                Connection postData = connection1.url(url)
                        .cookies(response1.cookies())
                        .ignoreHttpErrors(true)
                        .userAgent(useragent)
                        .header("Content-Language", headerlang)
                        .header("Content-Type", headertype)
                        .data("key", key)
                        .data("tourCriteria", tourcriteria)
                        .method(Connection.Method.POST)
                        .followRedirects(true);
 
            Connection.Response response2 = postData.execute();
 
            Document t = response2.parse();
            String t3 = t.html();
            Log.d("text", t3);
 
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
 
        class AuthTask extends AsyncTask<Void, Void, Void> {
 
            @Override
            protected Void doInBackground(Void... params) {
                Jpost();
                return null;
            }
 
            protected void onPostExecute(Void param) {
                //Print Toast or open dialog
            //    tvResult.setText(t3);
            }
        }
 
        public void doJsoupPost() {
            new AuthTask().execute();
        }
}


Полученный ошибочный результат из логов:
Кликните здесь для просмотра всего текста
04-30 18:07:25.279 15775-15806/com.example.hedd.jsoupposttest D/text﹕ <html>
<head></head>
<body>
<h3>Tours</h3>
<table>
<form action="/api/v2/tours/?key=i1M0kS14qJnPnvZ6h2dHaEU9HQ6dBYcQNjCUn" method="post"></form>
<tbody>
<tr>
<td>tourCriteria</td>
<td> <textarea name="tourCriteria" style="width: 500px; height: 60px;">{"departureCity":"2","touristGroup":{"babies":0,"adults":2,"kids":0},"countries":[20,22,29,32],"nightRange":{"to":15,"from":5},"checkInDateRange":{"to":8,"type":"CheckInDateRangeFlexible","from":2}}</textarea> </td>
</tr>
<tr>
<td><input type="submit"></td>
</tr>
</tbody>
</table>
</body>
</html>



Страница POST запроса :
Кликните здесь для просмотра всего текста
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate
Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,uk;q=0.2
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:341
Content-Type:application/x-www-form-urlencoded
Cookie:optimizelyEndUserId=oeu1427960574603r0.2360181799158454; km_ai=itR01%2FnfxXJfNFv6502sDMHoyWs%3D; km_lv=x; adm=4lnPnfP8hUc%2BhmM48dqUxJUi2nNSLFE7FgORCM8fYTuTguSbbeZynCz33sx%2FUmHI76%2B%2BNC7NZt0Ik%2FkPLUeL3KXWyMx1FFemJgQuFrwMDsBMiTSmOD2Z9x%2BBBajdDw%3D%3D; __ssid=1c47eb13-9a2a-446a-89fc-cdf175bc4eed; mkch=410415; ab=-1; km_uq=; rg=2; kvcd=1430376447940; optimizelySegments=%7B%7D; optimizelyBuckets=%7B%7D; _ga=GA1.2.1296942621.1427960569
Host:mobile.travelata.ru
Origin:http://mobile.travelata.ru
Referer:http://mobile.travelata.ru/demo/v2/tours.php
User-Agent:Mozilla/5.0 (X11; Linux i686 (x86_64)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36
Query String Parametersview sourceview decoded
key:i1M0kS14qJnPnvZ6h2dHaEU9HQ6dBYcQNjCUn
Form Dataview sourceview decoded
tourCriteria:%7B%22departureCity%22%3A%222%22%2C%22touristGroup%22%3A%7B%22babies%22%3A0%2C%22adults%22%3A2%2C%22kids%22%3A0%7D%2C%22countries%22%3A%5B20%2C22%2C29%2C32%5D%2C%22nightRange%22%3A%7B%22to%22%3A15%2C%22from%22%3A5%7D%2C%22checkInDateRange%22%3A%7B%22to%22%3A8%2C%22type%22%3A%22CheckInDateRangeFlexible%22%2C%22from%22%3A2%7D%7D


Страница ответа :
Кликните здесь для просмотра всего текста
Connection:keep-alive
Content-Encoding:gzip
Content-Type:application/json
Date:Thu, 30 Apr 2015 10:22:35 GMT
Server:nginx/1.6.2
Transfer-Encoding:chunked
X-Powered-By:PHP/5.5.21-1~dotdeb.1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2015, 18:58     JSOUP POST. В ответ вместо JSon приходит разметка страницы с полями для ввода данных
Посмотрите здесь:

Получить json в ответ на POST запрос - Программирование Android
Никак не могу добиться получения json с помощью вывода его через echo в PHP скрипте. Если перенаправлять запрос на файл .json, то всё...

POST авторизация с использованием JSOUP - Программирование Android
Вот собственно и у меня дедлок случился)) Ситуация следующая, пытаюсь залогиниться на joy.reactor.cc package...

Не приходит ответ при HttpPost - Программирование Android
Уже неделю мучаюсь с одной проблемой. Необходимо отправить запрос на сервер и получить ответ. Запрос, как я понимаю, проходит, однако...

JSON ответ в виде \uXXXX - Программирование Android
Добрый день. Делаю запрос к серверу методом GET. Ответ приходит в виде JSON, но кириллица отображается не правильно. Как сконвертить в...

Как распарсить Json-ответ Android приложении? - Программирование Android
Добрый день! Android приложение получает ответ от сервера в формате Json. Есть 2 варианта ответа : 1. 2. Какой лучше...

Retrofit, JSON, @POST, @GET - Программирование Android
Уважаемые программисты, прошу вашей помощи! Хожу на курсы по разработке мобильных приложений, месяц, как хожу, мало еще что знаю, но...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
30.04.2015, 20:20     JSOUP POST. В ответ вместо JSon приходит разметка страницы с полями для ввода данных #2
А .html() по вашему что возвращает? html и возвращает.
Цитата Сообщение от Hedd Посмотреть сообщение
Назад должен получить json
А где это в коде?
А doJsoupPost() и Jpost() зачем?
Hedd
13 / 13 / 2
Регистрация: 21.01.2015
Сообщений: 131
30.04.2015, 20:55  [ТС]     JSOUP POST. В ответ вместо JSon приходит разметка страницы с полями для ввода данных #3
Rube, doJsoupPost() это я вынес вызов отдельно, чтобы не путаться в asynctask. А вызываю я ее при старте просто так пока что. Чтобы сразу результат видеть. Потом переносить буду нормально по классам.
Jpost() функция в которую я вынес основные действия.
А как мне получить в данном коде json? Почитал про объекты и массивы json, там вроде как нужно тоже сначала строкой получить результат. Не понял этот момент.

Или мой говнокод лучше сразу переписывать по новой под json?
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
30.04.2015, 21:15     JSOUP POST. В ответ вместо JSon приходит разметка страницы с полями для ввода данных #4
Json и JSOUP это как бы разные вещи. Json вроде как сам умеет в инет ходить, поэтому выкинь JSOUP, импортируй Json и ищи примеры в сети. Их там полно, я с Json один раз только работал, больше с JSOUP.
Hedd
13 / 13 / 2
Регистрация: 21.01.2015
Сообщений: 131
30.04.2015, 21:18  [ТС]     JSOUP POST. В ответ вместо JSon приходит разметка страницы с полями для ввода данных #5
Rube, хорошо понял. а как вы получали результат в виде json если требовалось?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2015, 21:21     JSOUP POST. В ответ вместо JSon приходит разметка страницы с полями для ввода данных
Еще ссылки по теме:

Передать JSON в теле POST запроса? - Программирование Android
Хочу подключиться к сайту но не могу понять как предавать json в post запросе? где это можно прочитать, а лучше реальный пример посмотреть.

Как сформировать JSON для данных разных категорий? - Программирование Android
У меня есть данные разных категорий: список контактов телефона, текстовые сообщения,координаты местоположения, фото(изображения) в формате...

Послать POST запрос с параметрами и получить json - Программирование Android
Всем привет! Столкнулся с проблемой. Как послать POST запрос и получить назад результат json. Опишу подробно: Есть апи сайта, на...

Как отправлять get, post запрос а затем обработать в формате json? - Программирование Android
Как на android srudio отправить post, ger запрос, затем обработать ответ в формате json

Разметка для RadioGroup - Программирование Android
Делаю карточку вопрос-варианты ответа. Выглядит сейчас она так, как на прикреплённом скриншоте, без редактирования, как есть. Разметка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
30.04.2015, 21:21     JSOUP POST. В ответ вместо JSon приходит разметка страницы с полями для ввода данных #6
Hedd, я не из сети их получал, а сам формировал файл, для последующего чтения. Но потом понял, что лучше с БД работать.
Так что не подскажу, но примеры как я сказал найти не проблема.
Yandex
Объявления
30.04.2015, 21:21     JSOUP POST. В ответ вместо JSon приходит разметка страницы с полями для ввода данных
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru