web-dev-qa-db-fra.com

Android Volley MalformedURLException Bad URL

Après avoir effectué une deuxième demande réseau à l'aide de Volley, j'obtiens toujours cette erreur. Peu importe l'URL que je mets. Volley prétend toujours qu'il est mal formé.

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)

En recherchant plus loin, j'ai mis quelques journaux dans HurlStack. Dans

public HttpResponse performRequest(Request<?> request, Map<String, String> additionalHeaders),

la demande qui échoue est REQUEST [ ] 0x0 LOW 26. "

Ainsi, la ligne 101 de HurlStack: URL parsedUrl = new URL(url);

échoue avec une URL vide (request.getUrl() est vide).

J'utilise OkHttpStack (étendant HurlStack). Des idées sur ce qui pourrait être à l'origine de cela?

19
Eric Cochran

en fait le problème vient de votre url et non de la volée. Votre URL n'est pas un URI. Il n'y a aucun composant de protocole dedans. Il faut http:// ou tout autre protocole que vous envisagez. Si vous avez le http dans votre URL, assurez-vous qu'il est correctement formé ou non.

Par exemple, la formation de votre URL doit être comme ceci

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

N'oubliez pas de lire Spécification d'URL et assurez-vous que l'URL que vous fournissez est valide.

13
King of Masses

Assurez-vous que vous avez transmis l'URL comme deuxième paramètre dans JsonObjectRequest ou StringRequest. J'ai fait la même erreur qui a produit la même erreur que celle que vous avez rencontrée.

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

Utilisez http: // OR https: //

préfixe de votre exemple d'URL: example.com/information.json écrivez-le http://example.com/information.json

3
Dildarkhan Pathan

cette exception se produit lorsque vous frappez un Url qui n'est pas préfixé avechttp// ou https//. alors vérifiez qu'il y en ahttp// est avec votre URL. vous pouvez obtenir plus d'informations ici et voir ces liens

1
John smith