安卓Volley MalformedURLException 错误的URL

22
在使用 Volley 发送第二个网络请求后,我总是得到这个错误。无论我输入什么 url,都似乎没有关系。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);

由于URL为空(request.getUrl()为空),所以失败了。

我正在使用扩展自HurlStack的OkHttpStack。你有什么想法造成这个问题吗?


@RevanthRev:我认为你应该发布你的代码以获取更多信息。 - BNK
2
http://stackoverflow.com/q/32245444/4522954 @BNK - RevanthKrishnaKumar V.
@RevanthRev:你的问题已经解决了吗? - BNK
2
你能添加请求代码吗? - C.d.
烤一下URL字符串。它是空的吗??如果是,那么如果URL为空,则不是Volley问题。 - Tasos
显示剩余7条评论
4个回答

19

实际上,问题出在您的URL上,而不是Volley。 您的URL不是URI。它没有协议组件。 它需要http://或其他您打算使用的协议。 如果您的url中有http,请确保其格式是否正确。

例如,您的url应该像这样:

public String URL = "http://www.w3schools.com/webservices/tempconvert.asmx";

不要忘记阅读URL规范,并确保您提供的URL是有效的。


4

确保在JsonObjectRequest或StringRequest中将URL作为第二个参数传递。我曾犯过同样的错误,导致了你遇到的相同错误。

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Method.POST, URL, null, ResponseListener, ErrorListener);

我可以使用JsonArrayRequest,在这种情况下我可能也会遇到同样的问题。 - KOUSIK daniel

3

2

当您访问未以http//https//为前缀的URL时,会发生此异常。因此,请检查您的URL中是否有http//

您可以在此处获取更多信息,并查看这些链接。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接