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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.88
Evgenij
0 / 0 / 0
Регистрация: 24.07.2012
Сообщений: 9
#1

Создание пост-запроса - Программирование Android

24.07.2012, 11:07. Просмотров 1962. Ответов 14
Метки нет (Все метки)

Всем доброго дня!
Я занимаюсь разработкой android-приложений, и к меня появилась задачка..по Post-запросу вызывать такси c android.
То есть..есть у нас приложение, там есть данные пользователя..ну скажем, имя и телефон. И по кнопке "Вызвать" должно вызываться такси. Например, на этом сайте http://www.taxi-ladya.ru/ должна заполняться Имя и Телефон (Заказ такси ONLINE), и отправляться им на сервер.
На moziila отлавливал post-запрос. Вид у него следующий во вложении + расшифрофка POSTDATA
Код, который я использовал следующий:
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
// Create a new HttpClient and Post Header
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://www.megapolistaxi.ru");
 
        try {
            //Добавляем свои данные
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
            /*
            nameValuePairs.add(new BasicNameValuePair("FIO", mFIO));
            nameValuePairs.add(new BasicNameValuePair("PhoneNumber", String.valueOf(mPhoneNumber)));
            nameValuePairs.add(new BasicNameValuePair("Whence", mWhence));
            nameValuePairs.add(new BasicNameValuePair("Where", mWhere));
            nameValuePairs.add(new BasicNameValuePair("When", mWhen));
            nameValuePairs.add(new BasicNameValuePair("Choice", mChoice));
            */
            nameValuePairs.add(new BasicNameValuePair("name", "sergey"));
            nameValuePairs.add(new BasicNameValuePair("phone", "7(910)4278003"));
            nameValuePairs.add(new BasicNameValuePair("action", "zvonok"));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
 
            // Выполняем HTTP Post Request
            HttpResponse response = httpclient.execute(httppost);
            
        } catch (ClientProtocolException e) {
            Log.v("error", "yes");
            // TODO Auto-generated catch block
        } catch (IOException e) {
            Log.v("error", "yes");
            // TODO Auto-generated catch block
        }
ну еще пробовал вот так:
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
String citateRequestString = "http://www.taxi-ladya.ru";
        String resultString = new String("");
        try {
 
            URLConnection connection = null;
            URL url = new URL(citateRequestString);
        
          
               connection = url.openConnection( );
 
          HttpURLConnection httpConnection = (HttpURLConnection)connection;
          httpConnection.setRequestMethod("POST");
          
          httpConnection.setRequestProperty("User-Agent", "MyAndroid/1.6");
          httpConnection.setRequestProperty("Content-Language", "ru-RU");
          httpConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
 
          
          httpConnection.setDoOutput(true);
          httpConnection.setDoInput(true);
          
          httpConnection.connect();
 
          // здесь можем писать в поток данные запроса
          OutputStream os = httpConnection.getOutputStream();
          String str = "name=Сергей&phone=79163174663&action=zvonok";
          os.write( str.getBytes()); 
          
          os.flush();
          os.close();
 
          
           int responseCode = httpConnection.getResponseCode();
           if (responseCode == HttpURLConnection.HTTP_OK) {
                  InputStream in = httpConnection.getInputStream();
                  
                  InputStreamReader isr = new InputStreamReader(in, "UTF-8");
 
                  StringBuffer data = new StringBuffer();
                  int c;
                  while ((c = isr.read()) != -1){
                      data.append((char) c);
                  }
 
 
                  resultString = new String (data.toString());
 
            }
            else
            {
                resultString = "Server does not respond";
            }
         }
         catch (MalformedURLException e) { 
                    resultString = "MalformedURLException:" + e.getMessage();
           }
         catch (IOException e) { 
                   resultString = "IOException:" + e.getMessage();
          }
         
         Log.v("connection", resultString);
         //return resultString;
Думаю, что ошибка какая то мелочная..вроде же все верно...
И посоветуйте, пожалуйста, где можно более подробно изучить данный пример с наглядными примерами.
Спасибо!
Миниатюры
Создание пост-запроса  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.07.2012, 11:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание пост-запроса (Программирование Android):

Создание XML запроса - Программирование Android
Всем привет) Пишу приложения для регистрирования пользователей на сервере. Пользователь вводит данные,создаётся хмл файл и отправляется...

Пост запрос и обработка полученой иформации - Программирование Android
Есть пост запрос и затем обработка полученой инфы, снизу приведена меньшая часть String str = null; HttpClient httpclient = new...

Как пост запросом отправить два параметра - Программирование Android
Как пост запросом отправить два параметра один из которых jpg файл? Второй параметр строка. Изображение для отправки подготавливаю так: ...

Создать базу данных с(Создание функции БД, Создание процедуры БД, Создание тригера БД) - Программирование Android
В задание для курсовой работы по БД входят вот такие пункты: 1.2 Создание функции БД. 1.3 Создание процедуры БД 1.4 Создание...

Отправка пост запроса - Delphi
Всем доброго времени суток. Подскажите как мне отправить посто запрос с такими параметрами как на картинке?...

кусочек пост запроса - PHP
При регистрации на сайте t35.com отправляется ПОСТ запрос с такой переменной...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
nanowar
1 / 1 / 0
Регистрация: 25.07.2012
Сообщений: 13
25.07.2012, 14:01 #2
В манифесте включен INTERNET?
Evgenij
0 / 0 / 0
Регистрация: 24.07.2012
Сообщений: 9
25.07.2012, 14:04  [ТС] #3
конечно же)
nanowar
1 / 1 / 0
Регистрация: 25.07.2012
Сообщений: 13
25.07.2012, 14:13 #4
Первый вариант должен работать т.к. сам пользуюсь анологичным кодом, и он работает. Возможно проблема в другом? В логах что-то есть?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
try {
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(URL);
 
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
    nameValuePairs.add(new BasicNameValuePair("key", "value");
        
    form = new UrlEncodedFormEntity(nameValuePairs, "UTF-8");
    form.setContentEncoding(HTTP.UTF_8);
    httppost.setEntity(form);
    HttpResponse response = httpclient.execute(httppost);
} catch (ClientProtocolException e1) {
    e1.printStackTrace();
} catch (IOException e1) {
    e1.printStackTrace();
}
Evgenij
0 / 0 / 0
Регистрация: 24.07.2012
Сообщений: 9
25.07.2012, 14:30  [ТС] #5
а можете привести свой пример? с какого сайта и какая функция.
и какими средствами Вы определяли какие именно параметры нужно вбивать?
логи чуть позже приведу.
nanowar
1 / 1 / 0
Регистрация: 25.07.2012
Сообщений: 13
25.07.2012, 14:58 #6
Я сам писал серверную часть, у Вас я так понял нет доступа к серверной части сайта?

Попробуйте добавить следующие строчки, после
Java
1
HttpResponse response = httpclient.execute(httppost);
Java
1
2
3
4
5
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode != HttpStatus.SC_OK) {
        Toast.makeText(this, "Успех", Toast.LENGTH_LONG).show();
}
Log.d("Logs", "Status: "+statusCode);
После подтверждения формы с сайта, у меня отправились следующие данные
name:1111
phone:1
mode:updatez
btnOkunable to decode value)

Попробуйте изменить zvonok на updatez(при условии если конечно Java код работает, то данные должны дойти до сайта)

Если после отправки запроса отображается "Успех" значит все нормально, если же нет, то смотрите в логах статус кода.
Evgenij
0 / 0 / 0
Регистрация: 24.07.2012
Сообщений: 9
25.07.2012, 15:01  [ТС] #7
07-25 14:56:42.962: V/result(5421): HTTP/1.1 200 OK
вот у меня выдает лог при проверке:
Java
1
2
HttpResponse response = httpclient.execute(httppost);
Log.v("result", response.getStatusLine().toString());
но почему же они не перезванивают?
если с сайта заполняю, то все норм.
серверной части у меня нету, и запросы надо сделать к сайтам десяти вот так.
nanowar
1 / 1 / 0
Регистрация: 25.07.2012
Сообщений: 13
25.07.2012, 15:06 #8
В таком случае данные просто не пропускаются на уровне сервера, попробуйте изменить пост данные на:
formedit = "true"
mode = "updatez"
btnOk = "Заказать"
Evgenij
0 / 0 / 0
Регистрация: 24.07.2012
Сообщений: 9
25.07.2012, 15:08  [ТС] #9
а name и phone?
куда же они перезванивать то будут?))
nanowar
1 / 1 / 0
Регистрация: 25.07.2012
Сообщений: 13
25.07.2012, 15:11 #10
Просто допишите их в предложенном мной пост запросе
Evgenij
0 / 0 / 0
Регистрация: 24.07.2012
Сообщений: 9
25.07.2012, 15:32  [ТС] #11
не хочет, собака...((
nanowar
1 / 1 / 0
Регистрация: 25.07.2012
Сообщений: 13
25.07.2012, 15:39 #12
Больше не знаю что и предложить...нужно разбирать ответ сервера....
Evgenij
0 / 0 / 0
Регистрация: 24.07.2012
Сообщений: 9
25.07.2012, 15:44  [ТС] #13
все равно спасибо за помощь))
Evgenij
0 / 0 / 0
Регистрация: 24.07.2012
Сообщений: 9
01.08.2012, 10:30  [ТС] #14
Всем доброго дня!
Вообщем разобрался я со своей проблемой все таки.
Для определения параметров и url запроса я использовал плагин firefox - Tamper Data. С параметрами все верно, но вот url он мне выдавал немного не тот. Для определения url я использовал Wireshark. Спасибо всем за помощь, ребят)
И все..все работает)
vladimir123
1 / 1 / 0
Регистрация: 02.06.2011
Сообщений: 111
26.02.2013, 20:56 #15
Цитата Сообщение от nanowar Посмотреть сообщение
Первый вариант должен работать т.к. сам пользуюсь анологичным кодом, и он работает. Возможно проблема в другом? В логах что-то есть?
а можно вопрос, как логи достать?)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2013, 20:56
Привет! Вот еще темы с ответами:

Обработка пост запроса - jQuery
Здравствуйте! Имеется скрипт, который по нажатию на субмит, выводит данные на текущей страницы без её перезагрузки. ...

Отправка пост запроса с кириллицей - Delphi
Добрый день, у меня есть проблема, мне нужно отправлять пост запрос на сайт, но там есть Русский текст, при отправке Русский текст...

В чем ошибка пост запроса? - PHP
Отправляю пост запрос.. заливаю картинку в альбом вк. Где ошибка? preg_match('|\\\/pu.vk.com\\\/c(.*)\\\/upload.php|U', $page,...

Отправка пост запроса с файлом - Java Сети
Пишу простенькую программу, одной из частей которой является загрузка файла на сервер(а точнее изображения на какой нибудь имидж хостинг). ...


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

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

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