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

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

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

HTTP post android - Программирование Android

02.04.2015, 14:42. Просмотров 1258. Ответов 12
Метки нет (Все метки)

Просмотрел множество статей об этом, пытался использовать простейший пример HttpRequest, но все оказалось не так уж легко. Просмотрел как нужно использовать Asynktask но не особо понял. И сделал другой пример но и тут вышла ошибка программа слетает после нажатия кнопки.

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
package ktl.myapplication;
 
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
 
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
 
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends Activity {
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
    }
 
 
 
 
    public void elec1(View view) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                HttpClient httpClient = new DefaultHttpClient();
                // replace with your url
                HttpPost httpPost = new HttpPost("www.shkz3.info/switch.php");
 
 
                //Post Data
                List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(2);
                nameValuePair.add(new BasicNameValuePair("PAR", "SVET1"));
 
 
 
                //Encoding POST data
                try {
                    httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));
                } catch (UnsupportedEncodingException e) {
                    // log exception
                    e.printStackTrace();
                }
 
                //making POST request.
                try {
                    HttpResponse response = httpClient.execute(httpPost);
                    // write response to log
                    Log.d("Http Post Response:", response.toString());
                } catch (ClientProtocolException e) {
                    // Log exception
                    e.printStackTrace();
                } catch (IOException e) {
                    // Log exception
                    e.printStackTrace();
                }
            }
        } ).start();
    }
 
}
logcat

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
04-02 17:28:31.320  21066-21066/ktl.myapplication D/GraphicBuffer﹕ create handle(0x61a8def0) (w:1088, h:1920, f:1)
04-02 17:28:31.354  21066-21066/ktl.myapplication D/GraphicBuffer﹕ create handle(0x61a9c1d0) (w:1088, h:1920, f:1)
04-02 17:28:34.268  21066-21066/ktl.myapplication I/View﹕ Touch down dispatch to android.widget.Button{4317aea8 VFED..C. ........ 425,192-654,336 #7f080040 app:id/btn3}, event = MotionEvent { action=ACTION_DOWN, id[0]=0, x[0]=113.5014, y[0]=68.82507, Xw[0]=0.0, Yw[0]=0.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=72550086, downTime=72550086, deviceId=3, source=0x1002 }
04-02 17:28:34.353  21066-21066/ktl.myapplication I/View﹕ Touch up dispatch to android.widget.Button{4317aea8 VFED..C. ...P.... 425,192-654,336 #7f080040 app:id/btn3}, event = MotionEvent { action=ACTION_UP, id[0]=0, x[0]=108.50604, y[0]=68.82507, Xw[0]=16.0, Yw[0]=16.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=72550207, downTime=72550086, deviceId=3, source=0x1002 }
04-02 17:28:34.386  21066-21066/ktl.myapplication D/dalvikvm﹕ create interp thread : stack size=128KB
04-02 17:28:34.386  21066-21066/ktl.myapplication D/dalvikvm﹕ create new thread
04-02 17:28:34.386  21066-21066/ktl.myapplication D/dalvikvm﹕ new thread created
04-02 17:28:34.386  21066-21066/ktl.myapplication D/dalvikvm﹕ update thread list
04-02 17:28:34.386  21066-21108/ktl.myapplication D/dalvikvm﹕ threadid=12: interp stack at 0x61b68000
04-02 17:28:34.386  21066-21108/ktl.myapplication D/dalvikvm﹕ init ref table
04-02 17:28:34.386  21066-21108/ktl.myapplication D/dalvikvm﹕ init mutex
04-02 17:28:34.386  21066-21108/ktl.myapplication D/dalvikvm﹕ threadid=12: created from interp
04-02 17:28:34.386  21066-21066/ktl.myapplication D/dalvikvm﹕ start new thread
04-02 17:28:34.387  21066-21108/ktl.myapplication D/dalvikvm﹕ threadid=12: notify debugger
04-02 17:28:34.387  21066-21108/ktl.myapplication D/dalvikvm﹕ threadid=12 (Thread-6538): calling run()
04-02 17:28:34.498  21066-21108/ktl.myapplication D/dalvikvm﹕ threadid=12: exiting
04-02 17:28:34.498  21066-21108/ktl.myapplication W/dalvikvm﹕ threadid=12: thread exiting with uncaught exception (group=0x4188dc98)
04-02 17:28:34.498  21066-21108/ktl.myapplication W/dalvikvm﹕ threadid=12: uncaught exception occurred
04-02 17:28:34.502  21066-21108/ktl.myapplication W/System.err﹕ java.lang.IllegalStateException: Target host must not be null, or set in parameters. scheme=null, host=null, path=www.shkz3.info/switch.php
04-02 17:28:34.506  21066-21108/ktl.myapplication W/System.err﹕ at org.apache.http.impl.client.DefaultRequestDirector.determineRoute(DefaultRequestDirector.java:607)
04-02 17:28:34.506  21066-21108/ktl.myapplication W/System.err﹕ at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:298)
04-02 17:28:34.506  21066-21108/ktl.myapplication W/System.err﹕ at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:587)
04-02 17:28:34.506  21066-21108/ktl.myapplication W/System.err﹕ at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:511)
04-02 17:28:34.506  21066-21108/ktl.myapplication W/System.err﹕ at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:489)
04-02 17:28:34.506  21066-21108/ktl.myapplication W/System.err﹕ at ktl.myapplication.MainActivity$1.run(MainActivity.java:68)
04-02 17:28:34.506  21066-21108/ktl.myapplication W/System.err﹕ at java.lang.Thread.run(Thread.java:841)
04-02 17:28:34.506  21066-21108/ktl.myapplication W/dalvikvm﹕ threadid=12: calling UncaughtExceptionHandler
04-02 17:28:34.519  21066-21108/ktl.myapplication E/AndroidRuntime﹕ FATAL EXCEPTION: Thread-6538
    Process: ktl.myapplication, PID: 21066
    java.lang.IllegalStateException: Target host must not be null, or set in parameters. scheme=null, host=null, path=www.shkz3.info/switch.php
            at org.apache.http.impl.client.DefaultRequestDirector.determineRoute(DefaultRequestDirector.java:607)
            at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:298)
            at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:587)
            at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:511)
            at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:489)
            at ktl.myapplication.MainActivity$1.run(MainActivity.java:68)
            at java.lang.Thread.run(Thread.java:841)
04-02 17:28:35.006  21066-21066/ktl.myapplication D/ActivityThread﹕ ACT-AM_ON_PAUSE_CALLED ActivityRecord{431659b0 token=android.os.BinderProxy@43165098 {ktl.myapplication/ktl.myapplication.MainActivity}}
04-02 17:28:35.053  21066-21066/ktl.myapplication D/ActivityThread﹕ ACT-PAUSE_ACTIVITY_FINISHING handled : 0 / android.os.BinderProxy@43165098
04-02 17:28:35.444  21066-21066/ktl.myapplication D/OpenGLRenderer﹕ Flushing caches (mode 0)
04-02 17:28:35.555  21066-21066/ktl.myapplication D/GraphicBuffer﹕ close handle(0x604a4a98) (w:1088 h:1920 f:1)
04-02 17:28:35.557  21066-21066/ktl.myapplication D/GraphicBuffer﹕ close handle(0x61bc41a8) (w:1088 h:1920 f:1)
04-02 17:28:35.558  21066-21066/ktl.myapplication D/GraphicBuffer﹕ close handle(0x61a8def0) (w:1088 h:1920 f:1)
04-02 17:28:35.559  21066-21066/ktl.myapplication D/GraphicBuffer﹕ close handle(0x61a9c1d0) (w:1088 h:1920 f:1)
04-02 17:28:35.851  21066-21115/ktl.myapplication D/dalvikvm﹕ threadid=13: interp stack at 0x605a3000
04-02 17:28:35.851  21066-21115/ktl.myapplication D/dalvikvm﹕ init ref table
04-02 17:28:35.851  21066-21115/ktl.myapplication D/dalvikvm﹕ init mutex
04-02 17:28:35.873  21066-21066/ktl.myapplication D/OpenGLRenderer﹕ Flushing caches (mode 1)
04-02 17:28:35.890  21066-21066/ktl.myapplication D/OpenGLRenderer﹕ Flushing caches (mode 0)
04-02 17:28:35.901  21066-21066/ktl.myapplication D/ActivityThread﹕ ACT-DESTROY_ACTIVITY handled : 1 / android.os.BinderProxy@43165098
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2015, 14:42     HTTP post android
Посмотрите здесь:

Android query и HTTP Post - Программирование Android
Добрый день. Очень уж понравилась библиотека. Но ни как не получается передать корректный POST запрос. Вот кусок кода: ...

http Post - Программирование Android
Такая проблема. В пост запросе, в хидер добавляю httpPost.addHeader(&quot;Content-Length&quot;, count); и вываливается исключение : ...

Русский Post запрос в базу через http - Программирование Android
Кто в курсе этого метода связи с БД на удаленном сервере, как через POST отправить переменные с русскими буквами? Английский воспринимает...

Http POST запрос, как правильно написать - Программирование Android
Добрый день, мне нужно отправить данные на сервер, посредством http post запросом, нужно добавить автомобиль, сам пост запрос выглядит вот...

HTTP Client для Android - Программирование Android
Доброго времени суток друзья. Столкнулся с такой проблемой. Нужно написать HTTP Client , я его вроде бы написал , но проблема в том ,что...

Подключение http библиотек в android studio - Программирование Android
Добрый день. android studio создал проект, авторизация пользователя с post запросом на сервер. Прописал подключение библиотек, при...

ANDROID и POST запрос - Программирование Android
Если честно я не знал в какой раздел лучше написать так как моя задача затрагивает несколько областей программирования. Если что извините...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
02.04.2015, 14:54     HTTP post android #2
galix9, сначала там и правда бывает сложно. Вы попробуйте во всех строчках поставить Log.i("***", "1"); (вместо 1 ставьте последовательно числа). Увидите, на каком шаге программа падает. Или используйте отладку (debug).
galix9
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 6
02.04.2015, 15:09  [ТС]     HTTP post android #3
CoolMind, я только начал андроид программирование, так что можете по подробнее рассказать о вашем ответе?
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
02.04.2015, 16:02     HTTP post android #4
galix9, например, после этой строчки:
Java
1
HttpPost httpPost = new HttpPost("www.shkz3.info/switch.php");
добавляете
Java
1
Log.i("***", "2");
Аналогично для нескольких других строчек (с другими числами).
Затем запускаете, переключаетесь в Android Studio внизу на "6: Android". Там выбираете Log level: Info. Запускаете программу. Смотрите, какие строчки бегут. Когда она упадёт, выйдет красное сообщение там же. Прокручиваете немного вверх и видите, какая строчка выполнилась последней.
galix9
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 6
02.04.2015, 16:42  [ТС]     HTTP post android #5
CoolMind, эта строка выполнилась последней httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
02.04.2015, 18:53     HTTP post android #6
galix9, хорошо. Пока не стану залезать в свои исходники, посмотрим ваш код.
Java
1
2
List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(2);
nameValuePair.add(new BasicNameValuePair("PAR", "SVET1"));
В первой строке происходит инициализация объекта. В скобках ничего писать не нужно, никаких двоек. Во второй строке происходит добавление первого элемента. Как мне кажется, в вашем коде добавление идёт не в первый, а в третий элемент. Попробуйте удалить двойку.
galix9
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 6
02.04.2015, 19:07  [ТС]     HTTP post android #7
CoolMind, все же это ничем не помогло. вот logcat приложения
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
04-02 22:05:23.502    6896-6959/ktl.myapplication W/dalvikvm﹕ threadid=12: thread exiting with uncaught exception (group=0x41875c98)
04-02 22:05:23.502    6896-6959/ktl.myapplication W/dalvikvm﹕ threadid=12: uncaught exception occurred
04-02 22:05:23.502    6896-6959/ktl.myapplication W/System.err﹕ java.lang.IllegalStateException: Target host must not be null, or set in parameters. scheme=null, host=null, path=www.shkz3.info/switch.php
04-02 22:05:23.503    6896-6959/ktl.myapplication W/System.err﹕ at org.apache.http.impl.client.DefaultRequestDirector.determineRoute(DefaultRequestDirector.java:607)
04-02 22:05:23.503    6896-6959/ktl.myapplication W/System.err﹕ at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:298)
04-02 22:05:23.503    6896-6959/ktl.myapplication W/System.err﹕ at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:587)
04-02 22:05:23.503    6896-6959/ktl.myapplication W/System.err﹕ at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:511)
04-02 22:05:23.503    6896-6959/ktl.myapplication W/System.err﹕ at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:489)
04-02 22:05:23.504    6896-6959/ktl.myapplication W/System.err﹕ at ktl.myapplication.MainActivity$1.run(MainActivity.java:73)
04-02 22:05:23.504    6896-6959/ktl.myapplication W/System.err﹕ at java.lang.Thread.run(Thread.java:841)
04-02 22:05:23.504    6896-6959/ktl.myapplication W/dalvikvm﹕ threadid=12: calling UncaughtExceptionHandler
04-02 22:05:23.505    6896-6959/ktl.myapplication E/AndroidRuntime﹕ FATAL EXCEPTION: Thread-958
    Process: ktl.myapplication, PID: 6896
    java.lang.IllegalStateException: Target host must not be null, or set in parameters. scheme=null, host=null, path=www.shkz3.info/switch.php
            at org.apache.http.impl.client.DefaultRequestDirector.determineRoute(DefaultRequestDirector.java:607)
            at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:298)
            at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:587)
            at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:511)
            at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:489)
            at ktl.myapplication.MainActivity$1.run(MainActivity.java:73)
            at java.lang.Thread.run(Thread.java:841)
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
02.04.2015, 20:00     HTTP post android #8
galix9, поискал по вашей ошибке, оказалось, что проблема в недописанном "http://": http://stackoverflow.com/questions/7...null-host-null
galix9
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 6
03.04.2015, 05:01  [ТС]     HTTP post android #9
CoolMind, ну вроде все нормально да вот только он ничего не отправляет может быть я что-то напутал со страницей? вот код страницы
PHPHTML
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
<?php 
$id=5;
$output=0;
$db= mysql_connect("localhost","shkzin_1","tolybaev");
mysql_select_db("shkzin_1",$db);
 
if ($_POST['PAR']=="SVET1") {
    $id=0;
    $light1 = mysql_query("SELECT * FROM lights WHERE id =1",$db);
    $stat_light1 = mysql_fetch_array($light1);
    $output = ($stat_light1['status'] + 1) % 2;
    mysql_query("UPDATE lights SET status = '$output' WHERE id = 1",$db); }
    
if ($_POST['PAR']=="SVET2") {
    $id=1;
    $light1 = mysql_query("SELECT * FROM lights WHERE id =2",$db);
    $stat_light1 = mysql_fetch_array($light1);
    $output = ($stat_light1['status'] + 1) % 2;
    mysql_query("UPDATE lights SET status = '$output' WHERE id = 2",$db); }
 
if ($_POST['PAR']=="ELEC1") {
    $id=2;
    $light1 = mysql_query("SELECT * FROM elec WHERE id =1",$db);
    $stat_light1 = mysql_fetch_array($light1);
    $output = ($stat_light1['status'] + 1) % 2;
    mysql_query("UPDATE elec SET status = '$output' WHERE id = 1",$db); }
 
if ($_POST['PAR']=="ELEC2") { 
    $id=3;
    $light1 = mysql_query("SELECT * FROM elec WHERE id =2",$db);
    $stat_light1 = mysql_fetch_array($light1);
    $output = ($stat_light1['status'] + 1) % 2;
    mysql_query("UPDATE elec SET status = '$output' WHERE id = 2",$db); }
    
if ($_POST['PAR']=="CLIM1") {
    $id=4;
    $light1 = mysql_query("SELECT * FROM climate WHERE id =1",$db);
    $stat_light1 = mysql_fetch_array($light1);
    $output = ($stat_light1['status'] + 1) % 2;
    mysql_query("UPDATE climate SET status = '$output' WHERE id = 1",$db); }
    
print json_encode(array("status" => $output, "id" => $id ));
?>
vindigo
18 / 18 / 3
Регистрация: 15.05.2014
Сообщений: 78
06.04.2015, 19:08     HTTP post android #10
Всем привет! Блин, как у вас HttpClient работает. У меня в Eclipse, он сразу перечеркивается, и определяется как устаревший. Гуглы тоже рекомендуют вместо него использовать HttpURLConnection. Но вот как с помощью него отправить json, я так и не нашел. Даже отдельную тему создал, почти 100 просмотров, ни одного ответа. galix9, ваша среда не помечает HttpClient как deprecated?
Извините, если оффтоп.

Добавлено через 16 минут
Кстати, тоже бился над подобной задачей, нашел хорошее решение вот здесь. Может поможет, кода много, но интересно.
galix9
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 6
07.04.2015, 07:13  [ТС]     HTTP post android #11
vindigo, я использую android studio вроде все нормально. Долго думал над решением, благо нашёл человека который помог решить вопрос. Код скину позже. И советую перейти на android studio там все удобнее и разница с eclipse не большая. К сожалению для моей задачи json не подходит
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
07.04.2015, 22:00     HTTP post android #12
vindigo, последний раз я работал с HttpClient (если не путаю с другим классом) зимой. Тогда ещё не перечёркивалось, хотя всё равно это не помешает с ним работать.
Куда вы хотели отправлять JSON - на сервер? Если да, то каким способом - через POST-запрос?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2015, 06:39     HTTP post android
Еще ссылки по теме:

Не отправляет post запрос в эмуляторе android 4.4 - Программирование Android
Есть приложение, которое отправляет и получает данные из нета посредством пост запроса, в андройд 2.2 все работает хорошо, в андройд 4.4 не...

Обработка результата POST-запроса в Android - Программирование Android
Приветствую, уважаемые программисты. Изучаю программирование на Android. Пытаюсь сделать простенькое клиент-серверное приложение. ...

RESTful-сервиса с Spring for Android POST запрос - Программирование Android
Здравствуйте коллеги. Отправляю GET запрос на сервер: private class DTOTask extends AsyncTask&lt;Void, Void, DTO&gt; { ...

Get и Post обязательный атрибут для клиент-сервера Android? - Программирование Android
Существуют ли другие методы для отправления запросов на сервер с приложения помимо GET запроса? Или использовать лишь get запрос?

Http библиотеки - Программирование Android
где можно скачать все библиотеки для http post запроса ?


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

Или воспользуйтесь поиском по форуму:
vindigo
18 / 18 / 3
Регистрация: 15.05.2014
Сообщений: 78
08.04.2015, 06:39     HTTP post android #13
CoolMind, Привет! Да, пробую JSON на сервер отправить с помощью HttpURLConnection. Кучу инфы прочитал, тему создал, никак не пойму как правильно отправить. Чувствую что-то с заголовками не-то делаю.
Yandex
Объявления
08.04.2015, 06:39     HTTP post android
Ответ Создать тему
Опции темы

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