请求队列中的Catch Volley异常添加

时间:2018-01-22 10:00:11

标签: java android android-volley

如果传递的URI不正确,我无法捕获异常或获取任何错误描述。
requestQueue.add(request)只是默默地传递。但是错误记录的内容如下:

E/Volley: [1045] NetworkDispatcher.processRequest: Unhandled exception java.lang.RuntimeException: Bad URL ?action=login&login=XX&mpassword=XX
      java.lang.RuntimeException: Bad URL ?action=login&login=XX&mpassword=XX
          at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:171)
          at com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:120)
          at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:87)
       Caused by: java.net.MalformedURLException: no protocol: ?action=login&login=XX&mpassword=XX
          at java.net.URL.<init>(URL.java:589)
          at java.net.URL.<init>(URL.java:486)
          at java.net.URL.<init>(URL.java:435)
          at com.android.volley.toolbox.HurlStack.executeRequest(HurlStack.java:92)
          at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:131)
          at com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:120) 
          at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:87) 

如何捕获此错误?

请注意,onResponse(JSONObject response)onErrorResponse(VolleyError error)都没有被解雇。

更新
我认为这是Volley的一个错误。它以静默方式执行(没有错误回调,也没有成功回调)。队列添加时也没有错误(根据日志实际发生错误)。

所以可能更正确的问题是:
为什么异常不以任何方式膨胀?我是否错过了设计所需的回调或参数检查?

我希望知道请求是否成功 我希望不正确的输入参数应该引发异常但不能静默执行 在调用Volley代码之前,我希望不会进行健全性检查。没有协议,没有服务器名称模式,没有端口表示法,没有内联密码/用户名检查等。我不应该关心这一点,因为Volley应该处理更高级别的代码。

1 个答案:

答案 0 :(得分:0)

这里明确说明了

错误的网址?action = login&amp; login = XX&amp; mpassword = XX

这意味着要么你没有在url中使用某种程度上有必要的协议,所以请在URL中做这样的事情

http://yourUrl.com?action=login&login=XX&mpassword=XX

如果uri即将远程尝试这样的事情

String incomingUrl = your_incoming_url;
if(incomingUrl.contains("http://")||incomingUrl.contains("https://")){
//use that incoming url in the volley url area
}else{

String httpString = "http://"+incomingURl;

//and use new httpString at the url of volley 

}

这是我猜的问题的解决方法