Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 729
#1

GET запрос - Программирование Android

16.02.2015, 14:11. Просмотров 811. Ответов 10
Метки нет (Все метки)

Уважаемые, подскажите пожалуйста что делаю не так ?
Посылаю GET запрос:
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package com.example.notificationapp.mySql;
 
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
 
import com.example.notificationapp.parser.JSONParser;
import com.example.notificationapp.MainActivity;
 
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;
 
import java.util.ArrayList;
import java.util.List;
 
 
public class CheckCustomer {
 
    JSONParser jsonParser = new JSONParser();
 
    // url получения списка всех продуктов
    private static String url_customer_detials = "http://customers.ru/get_customer_details.php";
 
    // JSON параметры
    private static final String TAG_SUCCESS = "success";
    private static final String TAG_CUSTOMER = "customer";
    private static final String TAG_ID = "id";
    private static final String TAG_NAME = "name";
    private static final String TAG_NUMBER = "number";
 
    private String number;
    private Context context;
 
    ProgressDialog pDialog;
 
    public void onCreate(String number, Context context) {
        this.number = number;
        this.context = context;
        Log.d("myLog", "CheckCustomer.onCreate");
 
        new GetProductDetails().execute();
    }
 
 
    class GetProductDetails extends AsyncTask<String, String, String> {
 
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(context);
            pDialog.setMessage("Loading product details. Please wait...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
            Log.d("myLog", "pDialog.show()");
        }
 
        protected String doInBackground(String[] params) {
 
            // проверяем статус success тега
            Log.d("myLog", "doInBackground(String[] params)");
            int success;
            try {
                // Список параметров
                List<NameValuePair> paramsList = new ArrayList<NameValuePair>();
                paramsList.add(new BasicNameValuePair("number", number));
                // получаем продукт по HTTP запросу
                Log.d("myLog", "paramsList= "+paramsList.toString());
                JSONObject json = jsonParser.makeHttpRequest(url_customer_detials, "GET", paramsList);
                Log.d("myLog", json.toString());
 
                success = json.getInt(TAG_SUCCESS);
                if (success == 1) {
 
                    Log.d("myLog", "продукт с nomber найден");
                    
                }else{
                    Log.d("myLog", "продукт с nomber не найден");
                    // продукт с nomber не найден
                }
            } catch (JSONException e) {
                Log.d("myLog", "JSONException");
                e.printStackTrace();
            }
 
            return null;
        }
 
        protected void onPostExecute(String file_url) {
            // закрываем диалог прогресс
            pDialog.dismiss();
        }
    }
 
}

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
83
84
85
86
87
88
89
90
91
92
93
package com.example.notificationapp.parser;
 
import android.util.Log;
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.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;
 
import java.io.*;
import java.util.List;
 
public class JSONParser {
 
    static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";
 
    // constructor
    public JSONParser() {
 
    }
 
    // метод получение json объекта по url
    // используя HTTP запрос и методы POST или GET
    public JSONObject makeHttpRequest(String url, String method, List<NameValuePair> params) {
 
        // Создаем HTTP запрос
        try {
 
            // проверяем метод HTTP запроса
            if(method == "POST"){
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(url);
                httpPost.setEntity(new UrlEncodedFormEntity(params));
 
                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();
 
            }else if(method == "GET"){
                DefaultHttpClient httpClient = new DefaultHttpClient();
                String paramString = URLEncodedUtils.format(params, "utf-8");
                url += "?" + paramString;
                Log.d("myLog", "url= "+url);
                HttpGet httpGet = new HttpGet(url);
 
                HttpResponse httpResponse = httpClient.execute(httpGet);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();
            }
 
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
 
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            Log.d("myLog", "sb= "+sb.toString());
            json = sb.toString();
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }
 
        // пытаемся распарсить строку в JSON объект
        try {
            jObj = new JSONObject(json);
        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
        }
 
        // возвращаем JSON строку
        return jObj;
 
    }
 
}
лог получаю такой:
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
......................................................................................
02-16 11:01:48.121      620-620/com.example.notificationapp D/myLog﹕ Name:
    Number: 2147483647
02-16 11:01:48.141      620-620/com.example.notificationapp D/myLog﹕ CheckCustomer.onCreate
02-16 11:01:48.210      620-620/com.example.notificationapp D/myLog﹕ pDialog.show()
02-16 11:01:48.221      620-634/com.example.notificationapp D/myLog﹕ doInBackground(String[] params)
02-16 11:01:48.221      620-634/com.example.notificationapp D/myLog﹕ paramsList= [number=2147483647]
02-16 11:01:48.231      620-634/com.example.notificationapp D/myLog﹕ url= [url]http://customers.ru/get_customer_details.php?number=2147483647[/url]
02-16 11:01:48.290      620-620/com.example.notificationapp W/EGL_emulation﹕ eglSurfaceAttrib not implemented
02-16 11:02:03.600      620-634/com.example.notificationapp D/myLog﹕ sb= <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>404 Not Found</title>
    </head><body>
    <h1>Not Found</h1>
    <p>The requested URL /get_customer_details.php was not found on this server.</p>
    </body></html>
02-16 11:02:03.610      620-634/com.example.notificationapp E/JSON Parser﹕ Error parsing data org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject
02-16 11:02:03.610      620-634/com.example.notificationapp W/dalvikvm﹕ threadid=11: thread exiting with uncaught exception (group=0x40a13300)
02-16 11:02:03.630      620-634/com.example.notificationapp E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
    java.lang.RuntimeException: An error occured while executing doInBackground()
            at android.os.AsyncTask$3.done(AsyncTask.java:299)
            at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
            at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
            at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
            at java.util.concurrent.FutureTask.run(FutureTask.java:137)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
            at java.lang.Thread.run(Thread.java:856)
     Caused by: java.lang.NullPointerException
            at com.example.notificationapp.mySql.CheckCustomer$GetProductDetails.doInBackground(CheckCustomer.java:79)
            at com.example.notificationapp.mySql.CheckCustomer$GetProductDetails.doInBackground(CheckCustomer.java:48)
            at android.os.AsyncTask$2.call(AsyncTask.java:287)
            at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
************at java.util.concurrent.FutureTask.run(FutureTask.java:137)
************at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
************at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
************at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
************at java.lang.Thread.run(Thread.java:856)
02-16 11:02:05.160      620-620/com.example.notificationapp E/WindowManager﹕ Activity com.example.notificationapp.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@411ef250 that was originally added here
    android.view.WindowLeaked: Activity com.example.notificationapp.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@411ef250 that was originally added here
            at android.view.ViewRootImpl.<init>(ViewRootImpl.java:374)
            at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:292)
            at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224)
            at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:149)
            at android.view.Window$LocalWindowManager.addView(Window.java:547)
            at android.app.Dialog.show(Dialog.java:277)
            at com.example.notificationapp.mySql.CheckCustomer$GetProductDetails.onPreExecute(CheckCustomer.java:60)
            at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
            at android.os.AsyncTask.execute(AsyncTask.java:534)
            at com.example.notificationapp.mySql.CheckCustomer.onCreate(CheckCustomer.java:44)
            at com.example.notificationapp.MainActivity.onClick(MainActivity.java:113)
            at android.view.View.performClick(View.java:4084)
            at android.view.View$PerformClick.run(View.java:16966)
            at android.os.Handler.handleCallback(Handler.java:615)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4745)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)
02-16 11:02:06.730      620-634/com.example.notificationapp I/Process﹕ Sending signal. PID: 620 SIG: 9
если в браузере вызвать:
http://customers.ru/get_customer_details.php?number=2147483647
то все окей работает, никаких ошибок, настрицу находит
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2015, 14:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос GET запрос (Программирование Android):

Как именно можно сделать SQLite запрос, если запрос уже сформирован? - Программирование Android
Здравствуйте. Помогите понять , как именно можно сделать SQLite запрос , если запрос уже сформирован Перечитал кучу информации но не могу...

Как посмотреть T-SQL запрос который генерирует Entity Framework запрос - C# MVC
как посмотреть T-SQL запрос который генерирует Entity Framework запрос в visual studio 2010, 2012

Как записать запрос так чтобы их запрос суммировался в одну ячейку? - MySQL
Как записать этот запрос так чтобы их запрос суммировался в одну ячейку? Перепробовал все что знал и все что подсказали, не получается ...

Как переделать запрос в цикле на один запрос с фильтром по массиву - 1С Битрикс
Мне говорят: код неправильный, надо запрос ciblockelement::getlist c фильтром по разделу, который в цикле для каждого раздела выполняется...

Запрос данных из БД. Один большой запрос или много маленьких? - C#
Есть основная форма, на которой расположен TreeView, содержащий щас 30 ветвей. По щелчке на ветке открываются дочерние формы, на каждой в...

Как в Delphi сделать запрос на запрос, база mssql, BDE - Delphi БД
Добрый день! Кто-нибудь может подсказать, как можно Tquery и использовать как таблицу, при написании другого запроса? Заранее спасибо!

10
ILNAR_93
Android
231 / 231 / 25
Регистрация: 19.01.2013
Сообщений: 1,754
Записей в блоге: 3
16.02.2015, 14:19 #2
сразу при просмотре кода заметно что нету

RequestProperty

постом что нужно отправлять ? JSON?
Java
1
.setRequestProperty("Content-Type", "application/json");
Иногда из-за этих якобы мелочей бывают проблемы...
1
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 729
16.02.2015, 14:30  [ТС] #3
ILNAR_93,
но у меня URLConnection вообще ведь не используется, или я не понял про что вы значит.
0
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
16.02.2015, 14:59 #4
У вас не сработал get
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /get_customer_details.php was not found on this server.</p>
</body></html>
И в браузере я получил 404, вот и jsonObject не создался и вылетел с NullPointer
Проверьте правильность запроса и работу сервера
1
ILNAR_93
Android
231 / 231 / 25
Регистрация: 19.01.2013
Сообщений: 1,754
Записей в блоге: 3
16.02.2015, 15:00 #5
NEvOl, в твоем случае setHeader...
Это предположения только) - возможно проблема вовсе в другом...
1
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 729
16.02.2015, 15:00  [ТС] #6
Nixy, я работаю пока с локальным сервером через денвер. Может в этом проблема ? нужно где-то указать это ?
То что он не работает я понимаю, но не понимаю почему, я пробовал перейти по тому URL который выше в Log'е. Все работает у меня.
0
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
16.02.2015, 15:05 #7
Проверьте String запроса полученный через дебаг в браузере если возвращает JSON то будем смотреть дальше, а пока Вам прилетело 404
1
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 729
16.02.2015, 15:07  [ТС] #8
Nixy,
вот что возвращает в браузере:
{"success":1,"message":"Customer is exist!","customer":[{"id":"1","name":"Sergey","number":"2147483647","created_at":"2015-02-16 15:29:55","updated_at":"0000-00-00 00:00:00"}]}

пхп скрипт:
PHP
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
<?php
 
$response = array();
 
require 'db_connect.php';
 
$db = new DB_CONNECT();
 
if (isset($_GET["number"])) {
    $number = $_GET['number'];
 
    $result = mysql_query("SELECT * FROM customers WHERE number = $number");
 
    if (!empty($result)) {
        if (mysql_num_rows($result) > 0) {
 
            $result = mysql_fetch_array($result);
 
            $customer = array();
            $customer["id"] = $result["id"];
            $customer["name"] = $result["name"];
            $customer["number"] = $result["number"];
            $customer["created_at"] = $result["created_at"];
            $customer["updated_at"] = $result["updated_at"];
            
            $response["success"] = 1;
            $response["message"] = "Customer is exist!";
            $response["customer"] = array();
 
            array_push($response["customer"], $customer);
 
            echo json_encode($response);
        } else {
            $response["success"] = 0;
            $response["message"] = "Customer is not exist!";
 
            echo json_encode($response);
        }
    } else {
        $response["success"] = 0;
        $response["message"] = "Customer is  not found";
 
        echo json_encode($response);
    }
} else {
    $response["success"] = 0;
    $response["message"] = "Required field(s) is missing";
 
    echo json_encode($response);
}
?>
0
androbro
326 / 287 / 61
Регистрация: 17.10.2014
Сообщений: 856
16.02.2015, 15:42 #9
NEvOl,
Цитата Сообщение от NEvOl Посмотреть сообщение
вот что возвращает в браузере:
в браузере телефона то?
1
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 729
16.02.2015, 15:49  [ТС] #10
androbro, в браузере эмулятора пишет так же: Not found
The requested URL /get_customer_details.php was not found on this server.
0
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
16.02.2015, 15:57 #11
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
На эмуляторе попросту может не быть соединения с вашим сервером.
1
16.02.2015, 15:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2015, 15:57
Привет! Вот еще темы с ответами:

Как в sql запрос вставить еще один запрос правильно? - PHP БД
Есть длинный запрос, в котором можете даже не разбираться если не хотите, но выдает он следующее: Запрос: SELECT...

Как сделать запрос, что бы найти минимальное число через под ЗАПРОС - SQL Server
Этот запрос у меня считает минимальное время ( сколько часов ведет урок препод), который ведет препод по предметам. Как это сделать...

Как записать этот запрос так чтобы их запрос суммировался в одну ячейку? - MySQL
Как записать этот запрос так чтобы их запрос суммировался в одну ячейку? (SELECT COUNT(goods_id) as count_rows FROM goods WHERE...

Если нужно сделать запрос на добавление, зачем предварительно делать запрос на выборку? - MS Access
Есть таблица: ID_записи, поле1, поле2, поле3. Хотелось бы записать запрос на добавление записи с полем1=!.!. (остальные пустые, кроме...


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

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

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