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

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

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

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

30.04.2015, 18:58. Просмотров 767. Ответов 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
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2015, 18:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос JSOUP POST. В ответ вместо JSon приходит разметка страницы с полями для ввода данных (Программирование Android):

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

Как отправить json post запросом и принят json в ответ? - Windows Phone
Вообщем начал постигать новую windows phone... Решил сразу попытаться наладить общение с сервером. Но вот что то не очень выходит....

Не приходит ответ с сервера при POST-запросе - Java Сети
Здравствуйте. Пытаюсь через Java отправить POST-запрос на сервер (обычную символьную строку типа &quot;token: ygKhigLI3fGR4hL&quot;). Вот...

POST запрос: иногда приходит пустой ответ от сервера - C#
Отсылаю POST запрос(HttpWebRequest) , использую прокси(запрос на pw.mail.ru) и очень часто ответ пустой. С чем связано - не пойму. ...

Гуглопоиск из приложения. Ответ приходит в виде стартовой страницы поиска - Visual Basic .NET
Есть код: Function GetContent(ByVal url As String) As String Dim reqGET As System.Net.WebRequest =...

Пытаюсь получить html страницы через ajax, приходит json - MODx CMS
Сам ajax: $.ajax({ type: &quot;GET&quot;, url: &quot;filter.html&quot;, dataType: 'html', ...

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

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

Приходит письмо с обратной связи, без данных ввода пользователя - PHP
ДОбрый день! На сайте есть обратная форма, для отправки на емейл, она сделана на пхп, при нажатии кнопки письмо приходит на емейл в...

Для разработанного класса объектов разработать asp-страницы для ввода данных объекта и передачу на сервер - C# ASP.NET
Для разработанного класса объектов(класс был создан раннее). Нужно разработать asp-страницы для ввода данных объекта и передачу на...

Получить ответ в JSON формате из базы данных - PHP
Всем добрый день! Возникла такая задача, необходимо по get запросу получить json-ответ. Пусть есть база данных &quot;города&quot;. В ней...

Разметка страницы для печати на принтере - HTML, CSS
Здравствуйте. Вопрос о полях принтера. Образец того что хочу достигруть разметкой html Например, такой код, как сдвинуть...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.04.2015, 21:21
Ответ Создать тему
Опции темы

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