Android Volley MalformedURLException错误的URL

Eri*_*ran 19 android android-networking android-volley okhttp

在使用第二个网络请求后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)
Run Code Online (Sandbox Code Playgroud)

进一步调查,我在HurlStack中放了几个日志.在

public HttpResponse performRequest(Request<?> request, Map<String, String> additionalHeaders),
Run Code Online (Sandbox Code Playgroud)

失败的请求是REQUEST [ ] 0x0 LOW 26."

因此,HurlStack的第101行: URL parsedUrl = new URL(url);

以空URL(request.getUrl()为空)失败.

我正在使用OkHttpStack(扩展HurlStack).关于可能导致这种情况的任何想法?

Kin*_*ses 13

实际问题是你的网址没有凌空.您的Url不是URI.它中没有协议组件.它需要http://或你想要的任何其他协议.如果你的网址中有http,请确保它的正确形成位置.

例如,您的网址形成应该是这样的

public String URL = "http://www.w3schools.com/webservices/tempconvert.asmx";
Run Code Online (Sandbox Code Playgroud)

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


Rev*_* V. 4

确保您已将 URL 作为 JsonObjectRequest 或 StringRequest 中的第二个参数传递。我犯了同样的错误,产生了与您所面临的相同的错误。

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Method.POST, URL, null, ResponseListener, ErrorListener);
Run Code Online (Sandbox Code Playgroud)