Android NullPointerException при возврате JSON из phpMyAdmin

0

У меня возникла проблема при попытке подключить phpMyAdmin к базе данных MySQL в Android-программировании. Вот часть, где я попытался получить результат, полученный из моего метода php:

public boolean getLogin(UserModel userModel) {
    String username = userModel.getUserName();
    String password = userModel.getPassword();
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    // getting JSON string from URL
    JSONObject json = jParser.makeHttpRequest(url, "GET", params);
    params.add(new BasicNameValuePair("getlogin", "1"));
    params.add(new BasicNameValuePair("userid", username));
    params.add(new BasicNameValuePair("password", password));

    try {   
        int success = json.getInt(TAG_SUCCESS);
        if (success == 1) {
            return true;
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return false;
}

И код в php:

else if(isset($_GET['getlogin'])){
$userid = $_GET['userid'];
$password = $_GET['password'];

$result = mysql_query("SELECT * FROM borrower WHERE userid = '$userid' AND password = '$password'");

if (mysql_num_rows($result) > 0) 
    $response["success"] = 1;
else
    $response["success"] = 0;

echo json_encode($response);
}

И сообщение об ошибке как трассировка стека:

02-14 21:57:19.967: D/dalvikvm(29822): GC_FOR_ALLOC freed 70K, 11% free 9471K/10567K, paused 18ms
02-14 21:57:19.975: I/dalvikvm-heap(29822): Grow heap (frag case) to 10.680MB for 589840-byte allocation
02-14 21:57:19.999: D/dalvikvm(29822): GC_CONCURRENT freed 1K, 11% free 10045K/11207K, paused 1ms+2ms
02-14 21:57:20.147: D/TextLayoutCache(29822): Using debug level: 0 - Debug Enabled: 0
02-14 21:57:20.257: D/CLIPBOARD(29822): Hide Clipboard dialog at Starting input: finished by someone else... !
02-14 21:57:35.272: I/URL(29822): http://192.168.0.101/lms/dataprocess.php
02-14 21:57:36.483: E/JSON Parser(29822): Error parsing data org.json.JSONException: End of input at character 0 of 
02-14 21:57:36.491: W/dalvikvm(29822): threadid=11: thread exiting with uncaught exception (group=0x40c341f8)
02-14 21:57:36.632: E/AndroidRuntime(29822): FATAL EXCEPTION: AsyncTask #1
02-14 21:57:36.632: E/AndroidRuntime(29822): java.lang.RuntimeException: An error occured while executing doInBackground()
02-14 21:57:36.632: E/AndroidRuntime(29822):    at android.os.AsyncTask$3.done(AsyncTask.java:278)
02-14 21:57:36.632: E/AndroidRuntime(29822):    at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
02-14 21:57:36.632: E/AndroidRuntime(29822):    at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
02-14 21:57:36.632: E/AndroidRuntime(29822):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
02-14 21:57:36.632: E/AndroidRuntime(29822):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
02-14 21:57:36.632: E/AndroidRuntime(29822):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
02-14 21:57:36.632: E/AndroidRuntime(29822):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
02-14 21:57:36.632: E/AndroidRuntime(29822):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
02-14 21:57:36.632: E/AndroidRuntime(29822):    at java.lang.Thread.run(Thread.java:856)
02-14 21:57:36.632: E/AndroidRuntime(29822): Caused by: java.lang.NullPointerException
02-14 21:57:36.632: E/AndroidRuntime(29822):    at Controller.UserController.getLogin(UserController.java:47)
02-14 21:57:36.632: E/AndroidRuntime(29822):    at AsyncTask.GetLoginAsyncTask.doInBackground(GetLoginAsyncTask.java:22)
02-14 21:57:36.632: E/AndroidRuntime(29822):    at AsyncTask.GetLoginAsyncTask.doInBackground(GetLoginAsyncTask.java:1)
02-14 21:57:36.632: E/AndroidRuntime(29822):    at android.os.AsyncTask$2.call(AsyncTask.java:264)
02-14 21:57:36.632: E/AndroidRuntime(29822):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
02-14 21:57:36.632: E/AndroidRuntime(29822):    ... 5 more
02-14 21:57:45.366: I/Process(29822): Sending signal. PID: 29822 SIG: 9

Исключительная часть с нулевым указателем находилась в try catch. Есть идеи? Заранее спасибо.

При доступе к URL из браузера это данные при возврате:

{"success":1}
  • 0
    Что находится на линии № 47 в UserController?
  • 0
    @android_dev int success = json.getInt (TAG_SUCCESS);
Теги:

1 ответ

0

На самом деле вы не делаете веб-запрос. Ошибка, которую вы делаете, заключается в том, что вы прямо пытаетесь разобрать JSON без фактического веб-запроса.

Ошибка:

 JSONObject json = jParser.makeHttpRequest(url, "GET", params);
    params.add(new BasicNameValuePair("getlogin", "1"));
    params.add(new BasicNameValuePair("userid", username));
    params.add(new BasicNameValuePair("password", password));

    try {   
        int success = json.getInt(TAG_SUCCESS);  
       // Here 'json' is an object you are required to pass in a request
       // you are making a web request and without it, you are trying to parse it, which is actually not the response you are expecting from server

        if (success == 1) {
            return true;
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }

Проверьте этот вопрос Как отправить массив String в качестве базовой пары значений имени HTTPPOST? , возьмите ссылку и напишите код согласно вашему требованию.

  • 0
    Хорошо, конечно, спасибо большое!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню