2017-04-09 57 views
0

我试图检索与凌空数据检索的数据,但我不断收到此错误:.NullPointerException而与凌空

这是一个与此链接“访问我的JSON文件的http:/192.168.1.4/pim/ get_all_bus.php”,其中192.168.1.4是我的本地IP地址

{ 
"Bus": [ 
    { 
     "id_bus": "3", 
     "name_bus": "51A", 
     "terminusDepart": "Ennasr1", 
     "terminus_arrivee": "TGM" 
    }, 
    { 
     "id_bus": "4", 
     "name_bus": "51A", 
     "terminusDepart": "Ennasr2", 
     "terminus_arrivee": "tunis" 
    } 
], 
"success": 1 
} 

是我得到的错误是这样

04-09 14:40:00.589 5256-5256/info.androidhive.volleyexamples E/AndroidRuntime: FATAL EXCEPTION: main 
                      Process: info.androidhive.volleyexamples, PID: 5256 
                      java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.hashCode()' on a null object reference 
                       at com.android.volley.Request.<init>(Request.java:136) 
                       at com.android.volley.toolbox.JsonRequest.<init>(JsonRequest.java:58) 
                       at com.android.volley.toolbox.JsonArrayRequest.<init>(JsonArrayRequest.java:42) 
                       at info.androidhive.volleyexamples.JsonRequestActivity.makeJsonArryReq(JsonRequestActivity.java:111) 
                       at info.androidhive.volleyexamples.JsonRequestActivity.onClick(JsonRequestActivity.java:146) 
                       at android.view.View.performClick(View.java:5697) 
                       at android.widget.TextView.performClick(TextView.java:10826) 
                       at android.view.View$PerformClick.run(View.java:22526) 
                       at android.os.Handler.handleCallback(Handler.java:739) 
                       at android.os.Handler.dispatchMessage(Handler.java:95) 
                       at android.os.Looper.loop(Looper.java:158) 
                       at android.app.ActivityThread.main(ActivityThread.java:7224) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 

,我使用的功能是这一个:

private void makeJsonArryReq() { 
    showProgressDialog(); 
    JsonArrayRequest req = new JsonArrayRequest("http:/192.168.1.4/pim/get_all_bus.php", 
      new Response.Listener<JSONArray>() { 
       @Override 
       public void onResponse(JSONArray response) { 
        Log.d(TAG, response.toString()); 

         msgResponse.setText(response.toString()); 


        //msgResponse.setText(response.toString()); 
        hideProgressDialog(); 
       } 
      }, new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        VolleyLog.d(TAG, "Error: " + error.getMessage()); 
        hideProgressDialog(); 
       } 
      }); 

    // Adding request to request queue 
    AppController.getInstance().addToRequestQueue(req, 
      tag_json_arry); 

    // Cancelling request 
    // ApplicationController.getInstance().getRequestQueue().cancelAll(tag_json_arry); 
} 

回答

0

这里您需要先调用JsonObjectRequest。你给定的链接,返回一个json对象。获取json对象后,您需要解析数据。

0

快速提示。在JSON格式中,大括号“{}”定义了一个对象,第三个括号“[]”定义了一个数组。

现在看看PHP脚本的响应。它从一个大括号开始。这意味着你的回应是一个JSON对象。因此,您需要从volley调用JSONObjectRequest而不是JSONArrayRequest。