使用Volley
发出第二个网络请求后,我总是收到此错误消息。我输入的网址是什么似乎并不重要。 Volley
总是声称它格式不正确。
08-04 20:16:26.885 14453-14470/com.thredup.android E/Volley﹕ [994] NetworkDispatcher.run: Unhandled exception java.lang.RuntimeException: Bad URL
java.lang.RuntimeException: Bad URL
at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:127)
at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:110)
Caused by: java.net.MalformedURLException: Protocol not found:
at java.net.URL.<init>(URL.java:176)
at java.net.URL.<init>(URL.java:125)
at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:101)
at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:93)
进一步调查,我在HurlStack中添加了几个日志。在
public HttpResponse performRequest(Request<?> request, Map<String, String> additionalHeaders),
失败的请求是REQUEST [ ] 0x0 LOW 26.
“
因此,HurlStack的第101行:URL parsedUrl = new URL(url);
因空网址失败(request.getUrl()
为空)。
我正在使用OkHttpStack
(扩展HurlStack)。
关于可能导致这种情况的任何想法?
答案 0 :(得分:13)
实际上问题在于你的网址没有排球。您的Url不是URI。它中没有协议组件。它需要public String URL = "http://www.w3schools.com/webservices/tempconvert.asmx";
或您想要的任何其他协议。如果你的网址中有http,请确保它的正确形成位置。
例如,您的网址形式应该是这样的
//first socket
var socket1 = socketIOClient('http://localhost:1337', {'forceNew: true});
//second socket
var socket2 = socketIOClient('http://localhost:1337', {'forceNew: true});
不要忘记阅读URL Specification并确保您提供的网址有效。
答案 1 :(得分:4)
确保您已将URL作为JsonObjectRequest或StringRequest中的第二个参数传递。我犯了同样的错误,就像你面对的那样产生了同样的错误。
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Method.POST, URL, null, ResponseListener, ErrorListener);
答案 2 :(得分:3)
使用 HTTP:// 要么 HTTPS://
您网址的前缀 例: example.com/information.json 把它写成 http://example.com/information.json
答案 3 :(得分:1)