如果传递的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应该处理更高级别的代码。
答案 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
}
这是我猜的问题的解决方法