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

Отправка POST запроса - Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 40, средняя оценка - 4.70
RosPC
-6 / 3 / 0
Регистрация: 21.09.2012
Сообщений: 80
21.09.2012, 17:14     Отправка POST запроса #1
Здраствуйте, нужно на сайт отправить пост запрос з логином і паролем, потом сайт оддаст строку, ее нужно вивсти в текствів, у меня есть код но он не работаєт:
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
String result = new String("");
                try{
                  HttpClient client = 
                      new DefaultHttpClient();
                  HttpPost post = 
                     new HttpPost("http://мой сайт");
                    
 
                
           int portOfProxy = android.net.Proxy.getDefaultPort();
                  if( portOfProxy > 0 ){
                     HttpHost proxy = new HttpHost(android.net.Proxy.getDefaultHost(), portOfProxy );
                     client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);      
                  }
                
                  
                  List pairs = new ArrayList();
                  pairs.add(new BasicNameValuePair("login", "login"));
                  pairs.add(new BasicNameValuePair("password", "password"));
                  post.setEntity(new UrlEncodedFormEntity(pairs));
                             
                  
                  HttpResponse response = client.execute(post);
                  
                  BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(),"windows-1251"));
           StringBuilder sb = new StringBuilder();
           String line = null;
           while ((line = reader.readLine()) != null) {
           sb.append(line + System.getProperty("line.separator"));
           }    
                  result = sb.toString();
                  
                  } catch (org.apache.http.client.ClientProtocolException e) {
                          // TODO Auto-generated catch block
                          result = "ClientProtocolException: " + e.getMessage();
                  } catch (IOException e) {
                          // TODO Auto-generated catch block
                          result = "IOException: " + e.getMessage();
                  
                  } catch (Exception e) {
                          // TODO Auto-generated catch block
                          result = "Exception: " + e.getMessage();
                  }
                  
                  
                tv.append(result);
проблема в етой строке HttpResponse response = client.execute(post);
result Exception: Host name may not be null
Что делать? Зарание БЛАГОДОРЮ!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
21.09.2012, 17:46     Отправка POST запроса #2
попробуй всё таки так
Java
1
HttpPost httpPost = new HttpPost(new URI(твой сайт));
RosPC
-6 / 3 / 0
Регистрация: 21.09.2012
Сообщений: 80
21.09.2012, 18:55  [ТС]     Отправка POST запроса #3
Цитата Сообщение от TanT Посмотреть сообщение
попробуй всё таки так
Java
1
HttpPost httpPost = new HttpPost(new URI(твой сайт));
попробовал, та самая ошибка...(

Добавлено через 45 минут
Цитата Сообщение от TanT Посмотреть сообщение
попробуй всё таки так
Java
1
HttpPost httpPost = new HttpPost(new URI(твой сайт));
я отправлял пустой пост та же ошибка...(

Добавлено через 19 минут
может ктото кинет мне какой то другой пример как отправить запрос... Спасибо!
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
21.09.2012, 21:34     Отправка POST запроса #4
Java
1
2
3
4
5
6
7
8
9
10
11
        final URI uri = new URI("адрес");
 
        final HttpGet httpGet = new HttpGet(uri);
        final HttpParams httpParameters = new BasicHttpParams();
        // Set the timeout in milliseconds until a connection is established.
        // The default value is zero, that means the timeout is not used.
        final int timeoutConnection = 10000;
        HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
        final DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);
        final HttpResponse response = httpClient.execute(httpGet);
        Log.d(TAG, "line: " + response.getStatusLine());
кусок реального кода с местами для вставки твоего адреса

get замени на post


вспомнил похожую ошибку, проверь доступность адреса в браузере и скопипасти от туда без изменений валидный URL
RosPC
-6 / 3 / 0
Регистрация: 21.09.2012
Сообщений: 80
22.09.2012, 15:04  [ТС]     Отправка POST запроса #5
Цитата Сообщение от TanT Посмотреть сообщение
Java
1
2
3
4
5
6
7
8
9
10
11
        final URI uri = new URI("адрес");
 
        final HttpGet httpGet = new HttpGet(uri);
        final HttpParams httpParameters = new BasicHttpParams();
        // Set the timeout in milliseconds until a connection is established.
        // The default value is zero, that means the timeout is not used.
        final int timeoutConnection = 10000;
        HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
        final DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);
        final HttpResponse response = httpClient.execute(httpGet);
        Log.d(TAG, "line: " + response.getStatusLine());
кусок реального кода с местами для вставки твоего адреса

get замени на post


вспомнил похожую ошибку, проверь доступность адреса в браузере и скопипасти от туда без изменений валидный URL
я зделал для теста вот так, урл скопіпастіл так как ви посоветовали:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
try {
 
                    final URI uri = new URI("http://developer.android.com/intl/ru/sdk/index.html");
             
                    final HttpGet httpGet = new HttpGet(uri);
                    final HttpParams httpParameters = new BasicHttpParams();
                    // Set the timeout in milliseconds until a connection is established.
                    // The default value is zero, that means the timeout is not used.
                    final int timeoutConnection = 10000;
                    HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
                    final DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);
 
                    final HttpResponse response = httpClient.execute(httpGet);
                    Log.d(TAG, "line: " + response.getStatusLine());
            } catch (Exception e) {
               e.printStackTrace();
            }
вилетает она в том же месте
final HttpResponse response = httpClient.execute(httpGet);



вот мой манифест файл, может я что то там не так огласил:
XML
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
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.organaizerprog"
    android:versionCode="1"
    android:versionName="1.0" >
 
    <uses-sdk
        android:minSdkVersion="15"
        android:targetSdkVersion="15" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>   
 
 
 
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >     
                
                    
          
            <activity
            android:name=".Organaizer"
            android:label="@string/title_activity_organaizer" >
            
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
        <activity android:name=".Zapis"
        android:label="@string/activity_zapis"
            android:screenOrientation="portrait" >
            </activity> 
            <activity android:name=".Zapisi"
        android:label="@string/activity_zapisi"
            android:screenOrientation="portrait" >
               
            </activity>
            <service android:process=":myservis" android:name="MyService"></service>
            
            <receiver android:name="BootBroadReceiv">
                <intent-filter>
                    <action android:name="android.intent.action.BOOT_COMPLETED"/>
                </intent-filter>
            </receiver>
                    
        
            
    </application>
<uses-permission  android:name="android.permission.INTERNET"></uses-permission>
</manifest>
я не думаю что ваш пример плахой, поптому возникаєт вопрос может я чтото не так делаю, может надо какие ищо действия чтоб прога работала, что то оглаисить...?

и ищо я думал что у миня емулятор глючит, тестил на планшетке... та же история...( android 4.0.3
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
22.09.2012, 16:36     Отправка POST запроса #6
может вы в юайном потоке в сеть лезете?

Добавлено через 10 минут
tv.append(result);
судя по этому, это таки юайный поток....
RosPC
-6 / 3 / 0
Регистрация: 21.09.2012
Сообщений: 80
22.09.2012, 17:29  [ТС]     Отправка POST запроса #7
Цитата Сообщение от V0v1k Посмотреть сообщение
может вы в юайном потоке в сеть лезете?

Добавлено через 10 минут
tv.append(result);
судя по этому, это таки юайный поток....
ну да! а что надо содавать отдельний поток для входа в сеть?.. и єсли да то подскажите как правильнее ето зделать или дайте ссилку на какую то статтю...)

І большое спасибо вам, кажетса ето и есть решение моїх проблем...)
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
22.09.2012, 17:58     Отправка POST запроса #8
http://developer.android.com/intl/ru...AsyncTask.html

Добавлено через 1 минуту
Цитата Сообщение от RosPC Посмотреть сообщение
а что надо содавать отдельний поток для входа в сеть?
ну да, надо, а начиная с API Level 11 еще и обязательно.
RosPC
-6 / 3 / 0
Регистрация: 21.09.2012
Сообщений: 80
22.09.2012, 18:21  [ТС]     Отправка POST запроса #9
Цитата Сообщение от V0v1k Посмотреть сообщение
http://developer.android.com/intl/ru...AsyncTask.html

Добавлено через 1 минуту

ну да, надо, а начиная с API Level 11 еще и обязательно.
Бальшое спасибо! очень помогли!
frostromix
 Аватар для frostromix
2 / 2 / 0
Регистрация: 13.12.2011
Сообщений: 67
16.06.2014, 20:30     Отправка POST запроса #10
Ну что ли хотя бы выложили бы результат то. Я вот не разобрался(
Если не трудно хотя бы в лс киньте
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2014, 20:33     Отправка POST запроса
Еще ссылки по теме:

Android Обработка результата POST-запроса в Android
Отправка Post запроса в Android предложении Android
Android Отправка POST
Отправка post запросов на сервер Android
Отправка POST запроса Android

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

Или воспользуйтесь поиском по форуму:
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
16.06.2014, 20:33     Отправка POST запроса #11
frostromix, дэд топик) в чём у Вас сложность возникла?
Yandex
Объявления
16.06.2014, 20:33     Отправка POST запроса
Ответ Создать тему
Опции темы

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