2017-09-20 69 views
-1

,我已经使用例如谷歌“https://developer.android.com/training/volley/simple.html#simple排球误差新请求队列

   RequestQueue queue = Volley.newRequestQueue(getApplicationContext()); 
      String url ="http://www.google.com"; 

      // Request a string response from the provided URL. 
      StringRequest stringRequest = new StringRequest(Request.Method.GET, url, 
        new Response.Listener<String>() { 
         @Override 
         public void onResponse(String response) { 
          // Display the first 500 characters of the response string. 
          message.setText("Response is: "+ response.substring(0,500)); 
         } 
        }, new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        message.setText("That didn't work!"); 
       } 
      }); 
       // Add the request to the RequestQueue. 
        queue.add(stringRequest); 

我得到的下面的错误。

E /排球:[77336] NetworkDispatcher.run:未处理的异常显示java.lang.NullPointerException:尝试从场到读取空对象引用 的java.lang '诠释java.lang.String.offset'。 NullPointerException:尝试从java.lang.String.com处的java.lang.String.compareToIgnoreCase(String.java:560) 上的null对象引用 的字段'int java.lang.String.offset'中读取java.lang.String $ CaseInsensitiveComparator.compare( String.java:77) at java.lang.String $ CaseInsensitiveComparator.compare(String.java:66) at java.util.TreeMap.find(TreeMap.java:277) 在java.util.TreeMap.putInternal(TreeMap.java:240) at java.util.TreeMap.put(TreeMap.java:186) at com.android.volley.NetworkResponse.toHeaderMap(NetworkResponse.java:138) at com.android.volley.NetworkResponse。(NetworkResponse.java:0) at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:169) at com.android.volley.NetworkDispatcher.run(NetworkDispatcher。 Java的:113)

+0

你能告诉我哪条线有错误(Logcat指向线)吗? –

+0

其实我不知道你指的是什么意思,这就是我应用这个请求时出现的错误。 –

回答

1

了很多工作,我后,我找到了解决办法,我用的是从GitHub而是采用了凌空库中的应用程序文件的依赖关系“编译‘com.android.volley:1.0.0:凌空’” 。希望有人能解释一下为什么我不能使用Github的库。感谢所有的帮助。

1

代码说你遇到了NullPointer exception

这意味着您在此代码中使用的变量在 运行时为空。

检查您的传递值不为null。

this

+0

我没有使用包含数据的变量,我试图测试这个简单的请求! –

0

请从响应为删除子: -

message.setText("Response is: "+ response.substring(0,500)); 

变更后:

if(response.lemght>500){ 
     message.setText("Response is: "+ response.substring(0,500)); 
    }else{ 

     message.setText("Response is: "+ response); 
    } 

试试这个 在创建请求队列,请通过上下文不是getApplicationContext(): -

RequestQueue queue = Volley.newRequestQueue(this);//if you are in activity, if you are in fragment then **getActivity()** 
+0

应用更改后仍然有相同的错误。 –

+0

有时getApplicationContext可能返回null,因此尝试将其更改为this或getActivity() –

0

在进行网络调用时,您可能会成功,但有时候不会有数据。所以请确保您在访问数据之前进行空检查。

if(response!=null){ 
    message.setText("Response is: "+ response.substring(0,500)); 
} 
+0

仍然一样,它看起来不是来自“响应”的错误。 –

+0

雅这就是我说的。我解决了你的空指针问题..但你没有得到响应数据,你正试图设置它。这就是为什么应用程序崩溃 – Anonymous

+0

你正在打“http://www.google.com”和期望字符串响应?如何bro..try命中不同的API,它给你字符串响应或JSON响应和try.Or如果可能的话检查翻新library.Its相同排球,但是新的 – Anonymous