Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/29: Рейтинг темы: голосов - 29, средняя оценка - 4.83
RosPC
-6 / 3 / 0
Регистрация: 21.09.2012
Сообщений: 80
#1

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

21.09.2012, 17:14. Просмотров 5264. Ответов 10
Метки нет (Все метки)

Здраствуйте, нужно на сайт отправить пост запрос з логином і паролем, потом сайт оддаст строку, ее нужно вивсти в текствів, у меня есть код но он не работаєт:
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
Что делать? Зарание БЛАГОДОРЮ!

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2012, 17:14
Ответы с готовыми решениями:

Отправка POST запроса
Здравствуйте! Решил попробовать написать приложение на Android. Задачу поставил...

Отправка POST запроса
Добрый день! столкнулся с проблемой, не могу отправить пост запрос, сваливаюсь...

Отправка POST запроса серверу
Здравствуйте. Пишу приложение для Android, которое получает данные о...

Не работает отправка POST запроса
try{ HttpClient httpclient = new DefaultHttpClient(); ...

Отправка POST-запроса на сервер
Задача - отправить на сервер запрос (либо параметры для запроса на сервере) и...

10
TanT
эволюционирую потихоньку
467 / 465 / 91
Регистрация: 30.06.2009
Сообщений: 1,399
21.09.2012, 17:46 #2
попробуй всё таки так
Java
1
HttpPost httpPost = new HttpPost(new URI(твой сайт));
0
RosPC
-6 / 3 / 0
Регистрация: 21.09.2012
Сообщений: 80
21.09.2012, 18:55  [ТС] #3
Цитата Сообщение от TanT Посмотреть сообщение
попробуй всё таки так
Java
1
HttpPost httpPost = new HttpPost(new URI(твой сайт));
попробовал, та самая ошибка...(

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

Добавлено через 19 минут
может ктото кинет мне какой то другой пример как отправить запрос... Спасибо!
0
TanT
эволюционирую потихоньку
467 / 465 / 91
Регистрация: 30.06.2009
Сообщений: 1,399
21.09.2012, 21:34 #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
1
RosPC
-6 / 3 / 0
Регистрация: 21.09.2012
Сообщений: 80
22.09.2012, 15:04  [ТС] #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
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
22.09.2012, 16:36 #6
может вы в юайном потоке в сеть лезете?

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

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

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

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

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

ну да, надо, а начиная с API Level 11 еще и обязательно.
Бальшое спасибо! очень помогли!
0
frostromix
2 / 2 / 1
Регистрация: 13.12.2011
Сообщений: 70
16.06.2014, 20:30 #10
Ну что ли хотя бы выложили бы результат то. Я вот не разобрался(
Если не трудно хотя бы в лс киньте
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
16.06.2014, 20:33 #11
frostromix, дэд топик) в чём у Вас сложность возникла?
0
16.06.2014, 20:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2014, 20:33

Отправка Post запроса в Android предложении
Есть определенная php страница надо отправить на нее Post запрос из Android...

Отправка POST
Дайте пожалуйства рабочий пример отправки POST запроса на сервер. ПЕрекопал пол...

Отправка post запросов на сервер
доброго, имеется программа на пк и хочу сделать аналог для андроида, но в...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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