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

Создание пост-запроса - Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.88
Evgenij
0 / 0 / 0
Регистрация: 24.07.2012
Сообщений: 9
24.07.2012, 11:07     Создание пост-запроса #1
Всем доброго дня!
Я занимаюсь разработкой 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;
Думаю, что ошибка какая то мелочная..вроде же все верно...
И посоветуйте, пожалуйста, где можно более подробно изучить данный пример с наглядными примерами.
Спасибо!
Миниатюры
Создание пост-запроса  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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. Спасибо всем за помощь, ребят)
И все..все работает)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2013, 20:56     Создание пост-запроса
Еще ссылки по теме:

Выполнение get запроса к веб службе Android
Формирование запроса БД Android
Android Как пост запросом отправить два параметра
Android Ошибка при отправлении Get запроса
Отправка POST запроса Android

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

Или воспользуйтесь поиском по форуму:
vladimir123
1 / 1 / 0
Регистрация: 02.06.2011
Сообщений: 111
26.02.2013, 20:56     Создание пост-запроса #15
Цитата Сообщение от nanowar Посмотреть сообщение
Первый вариант должен работать т.к. сам пользуюсь анологичным кодом, и он работает. Возможно проблема в другом? В логах что-то есть?
а можно вопрос, как логи достать?)
Yandex
Объявления
26.02.2013, 20:56     Создание пост-запроса
Ответ Создать тему
Опции темы

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