Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
galix9
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 6
1

HTTP post android

02.04.2015, 14:42. Просмотров 1435. Ответов 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
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2015, 14:42
Ответы с готовыми решениями:

Android query и HTTP Post
Добрый день. Очень уж понравилась библиотека. Но ни как не получается передать...

http Post
Такая проблема. В пост запросе, в хидер добавляю ...

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

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

Отправка файла на сервер http post запросом
Здравствуйте. Задача следующая - нужно отправить HTTP POST запрос, содержащий...

12
CoolMind
422 / 404 / 66
Регистрация: 06.10.2012
Сообщений: 1,734
02.04.2015, 14:54 2
galix9, сначала там и правда бывает сложно. Вы попробуйте во всех строчках поставить Log.i("***", "1"); (вместо 1 ставьте последовательно числа). Увидите, на каком шаге программа падает. Или используйте отладку (debug).
0
galix9
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 6
02.04.2015, 15:09  [ТС] 3
CoolMind, я только начал андроид программирование, так что можете по подробнее рассказать о вашем ответе?
0
CoolMind
422 / 404 / 66
Регистрация: 06.10.2012
Сообщений: 1,734
02.04.2015, 16:02 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. Запускаете программу. Смотрите, какие строчки бегут. Когда она упадёт, выйдет красное сообщение там же. Прокручиваете немного вверх и видите, какая строчка выполнилась последней.
0
galix9
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 6
02.04.2015, 16:42  [ТС] 5
CoolMind, эта строка выполнилась последней httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));
0
CoolMind
422 / 404 / 66
Регистрация: 06.10.2012
Сообщений: 1,734
02.04.2015, 18:53 6
galix9, хорошо. Пока не стану залезать в свои исходники, посмотрим ваш код.
Java
1
2
List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(2);
nameValuePair.add(new BasicNameValuePair("PAR", "SVET1"));
В первой строке происходит инициализация объекта. В скобках ничего писать не нужно, никаких двоек. Во второй строке происходит добавление первого элемента. Как мне кажется, в вашем коде добавление идёт не в первый, а в третий элемент. Попробуйте удалить двойку.
0
galix9
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 6
02.04.2015, 19:07  [ТС] 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)
0
CoolMind
422 / 404 / 66
Регистрация: 06.10.2012
Сообщений: 1,734
02.04.2015, 20:00 8
galix9, поискал по вашей ошибке, оказалось, что проблема в недописанном "http://": http://stackoverflow.com/questions/7...null-host-null
0
galix9
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 6
03.04.2015, 05:01  [ТС] 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 ));
?>
0
vindigo
20 / 20 / 3
Регистрация: 15.05.2014
Сообщений: 80
06.04.2015, 19:08 10
Всем привет! Блин, как у вас HttpClient работает. У меня в Eclipse, он сразу перечеркивается, и определяется как устаревший. Гуглы тоже рекомендуют вместо него использовать HttpURLConnection. Но вот как с помощью него отправить json, я так и не нашел. Даже отдельную тему создал, почти 100 просмотров, ни одного ответа. galix9, ваша среда не помечает HttpClient как deprecated?
Извините, если оффтоп.

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

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

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

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


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

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

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