【问题标题】:Android Volley MalformedURLException Bad URLAndroid Volley MalformedURLException 错误的 URL
【发布时间】:2014-09-27 15:20:07
【问题描述】:

使用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);

由于 url 为空而失败(request.getUrl() 为空)。

我正在使用OkHttpStack(扩展 HurlStack)。 关于可能导致此问题的任何想法?

【问题讨论】:

  • 我也收到此错误,您能解释一下您是如何解决的吗?谢谢。
  • 我也遇到这个错误,如果你解决了,请分享解决方案,非常感谢!
  • @Nightly 你找到解决办法了吗?
  • 你能在你提出请求的地方添加代码吗?

标签: android android-volley android-networking okhttp


【解决方案1】:

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

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

【讨论】:

  • 在这里我可以使用 JsonArrayRequest 我也可以遇到同样的问题
【解决方案2】:

使用 http:// 要么 https://

网址的前缀 例子: example.com/information.json 把它写成 http://example.com/information.json

【讨论】:

    【解决方案3】:

    实际上问题在于您的网址而不是凌空。您的 Url 不是 URI。其中没有协议组件。它需要http:// 或您想要的任何其他协议。如果您的网址中有 http,请确保它的格式是否正确。

    例如你的url格式应该是这样的

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

    别忘了阅读URL Specification 并确保您提供的网址有效。

    【讨论】:

      【解决方案4】:

      当您点击前缀为http//https//Url 时会发生此异常。因此请检查您的网址是否有http//。 你可以通过heresee这些链接获取更多信息

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多