2013-10-31 61 views
4

我尝试凌空库在我的Android应用程序凌空onErrorResponse给NullPointerException异常

这是我的日志

10-31 14:30:09.277: E/AndroidRuntime(22916): java.lang.NullPointerException 
10-31 14:30:09.277: E/AndroidRuntime(22916): at com.mypackage.api.Api$2.onErrorResponse(Api.java:269) 
10-31 14:30:09.277: E/AndroidRuntime(22916): at com.android.volley.Request.deliverError(Request.java:517) 
10-31 14:30:09.277: E/AndroidRuntime(22916): at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:101) 
10-31 14:30:09.277: E/AndroidRuntime(22916): at android.os.Handler.handleCallback(Handler.java:615) 
10-31 14:30:09.277: E/AndroidRuntime(22916): at android.os.Handler.dispatchMessage(Handler.java:92) 
10-31 14:30:09.277: E/AndroidRuntime(22916): at android.os.Looper.loop(Looper.java:137) 
10-31 14:30:09.277: E/AndroidRuntime(22916): at android.app.ActivityThread.main(ActivityThread.java:4745) 
10-31 14:30:09.277: E/AndroidRuntime(22916): at java.lang.reflect.Method.invokeNative(Native Method) 
10-31 14:30:09.277: E/AndroidRuntime(22916): at java.lang.reflect.Method.invoke(Method.java:511) 
10-31 14:30:09.277: E/AndroidRuntime(22916): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
10-31 14:30:09.277: E/AndroidRuntime(22916): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
10-31 14:30:09.277: E/AndroidRuntime(22916): at dalvik.system.NativeStart.main(Native Method) 

这是我如何使用凌空

GetStringRequest req = new GetStringRequest(Request.Method.GET,URL_API, 
    new Response.Listener<String>() { 
    // handle success response 
    }, new Response.ErrorListener() { 
    //handle error response 
    @Override 
public void onErrorResponse(VolleyError volleyError) { 

    try { 
     String error = new String(volleyError.networkResponse.data, HTTP.UTF_8); 
     } 
     catch (UnsupportedEncodingException e) { 
      // TODO Auto-generated catch block 
     e.printStackTrace(); 
     } 
    }); 

有时我得到错误的NullPointerException这line(269)

String error = new String(volleyError.networkResponse.data, HTTP.UTF_8); 

我不知道什么是错,有人知道吗?

+0

该行打印错误是269? – Raptor

+0

那一行是String error = new String(volleyError.networkResponse.data,HTTP.UTF_8); – user2940459

+1

您可以尝试检查'volleyError','volleyError.networkResponse'或'volleyError.networkResponse.data'是否为空。 – Raptor

回答

2

可能是volleyError.networkResponse.data为空。我不确定你用这行代码试图得到什么,但是和Volley一起工作,并想知道什么是volleyError。你可以试试这个:

String error = volleyError.toString(); 

就可以检查此字符串任何特定的错误[至少这是我要做的事。 VolleyErrors可能是API定义的少数例程之一,例如超时错误,连接错误,服务器错误等等。当然,如果您想根据特定错误触发其他操作,则可能需要进一步解析字符串。

2

好像onErrorResponse上少数设备的反应不同

onErrorResponse返回null上少数设备(这是坠机的原因)

new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
        if(error.getMessage==NULL){ 
    Toast.makeText(cardview.this, "Failed to retrieve data", Toast.LENGTH_LONG).show(); 
        } 
       else{ 
         Toast.makeText(cardview.this, error.getMessage().toString(), Toast.LENGTH_LONG).show(); 
        } 

       }); 

我也有同样的error..it从变化设备到设备...你可能会发现它不会在某些设备上产生空指针异常。

0

使用这个代码,希望这将有助于

@覆盖 公共无效onErrorResponse(VolleyError volleyError){

Log.v("VolleyError",volleyError.getMessage); 

}); 

这将在日志