Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
NEvOl
19 / 18 / 1
Регистрация: 13.08.2012
Сообщений: 734
1

GET запрос

16.02.2015, 14:11. Просмотров 915. Ответов 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
Ответы с готовыми решениями:

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

Как посмотреть T-SQL запрос который генерирует Entity Framework запрос
как посмотреть T-SQL запрос который генерирует Entity Framework запрос в visual...

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

Как в sql запрос вставить еще один запрос правильно?
Есть длинный запрос, в котором можете даже не разбираться если не хотите, но...

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

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

RequestProperty

постом что нужно отправлять ? JSON?
Java
1
.setRequestProperty("Content-Type", "application/json");
Иногда из-за этих якобы мелочей бывают проблемы...
1
NEvOl
19 / 18 / 1
Регистрация: 13.08.2012
Сообщений: 734
16.02.2015, 14:30  [ТС] 3
ILNAR_93,
но у меня URLConnection вообще ведь не используется, или я не понял про что вы значит.
0
Nixy
ComfyMobile
400 / 281 / 34
Регистрация: 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
237 / 237 / 49
Регистрация: 19.01.2013
Сообщений: 1,881
Записей в блоге: 3
16.02.2015, 15:00 5
NEvOl, в твоем случае setHeader...
Это предположения только) - возможно проблема вовсе в другом...
1
NEvOl
19 / 18 / 1
Регистрация: 13.08.2012
Сообщений: 734
16.02.2015, 15:00  [ТС] 6
Nixy, я работаю пока с локальным сервером через денвер. Может в этом проблема ? нужно где-то указать это ?
То что он не работает я понимаю, но не понимаю почему, я пробовал перейти по тому URL который выше в Log'е. Все работает у меня.
0
Nixy
ComfyMobile
400 / 281 / 34
Регистрация: 24.07.2012
Сообщений: 916
16.02.2015, 15:05 7
Проверьте String запроса полученный через дебаг в браузере если возвращает JSON то будем смотреть дальше, а пока Вам прилетело 404
1
NEvOl
19 / 18 / 1
Регистрация: 13.08.2012
Сообщений: 734
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
343 / 303 / 68
Регистрация: 17.10.2014
Сообщений: 898
16.02.2015, 15:42 9
NEvOl,
Цитата Сообщение от NEvOl Посмотреть сообщение
вот что возвращает в браузере:
в браузере телефона то?
1
NEvOl
19 / 18 / 1
Регистрация: 13.08.2012
Сообщений: 734
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 / 34
Регистрация: 24.07.2012
Сообщений: 916
16.02.2015, 15:57 11
Лучший ответ Сообщение было отмечено NEvOl как решение

Решение

На эмуляторе попросту может не быть соединения с вашим сервером.
1
16.02.2015, 15:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2015, 15:57

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

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

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


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

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

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