web-dev-qa-db-ja.com

Android Volley MalformedURLException Bad URL

Volleyを使用して2番目のネットワークリクエストを行った後、常にこのエラーが発生します。私が入力した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()は空です)。

私はOkHttpStack(HurlStackの拡張)を使用しています。これを引き起こしている可能性があるものについてのアイデアはありますか?

19
Eric Cochran

実際には、ボレーではなくURLに問題があります。 URLはURIではありません。その中にプロトコルコンポーネントはありません。が必要だ http://またはその他のプロトコル。 URLにhttpがある場合は、正しく形成されているかどうかを確認してください。

たとえば、URLの構成は次のようになります

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

RL仕様 を必ずお読みになり、提供するURLが有効であることを確認してください。

13
King of Masses

JsonObjectRequestまたはStringRequestの2番目のパラメーターとしてURLを渡したことを確認してください。私はあなたが直面したものと同じエラーを生成する同じ間違いをしました。

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

Http:// OR https://を使用します

uRLの例のプレフィックス:example.com/information.json次のように記述 http://example.com/information.json

3

この例外は、接頭辞がhttp//またはhttps//Urlをヒットしているときに発生します。URLにhttp//があることを確認してください。より多くの情報を得ることができます ここ および 参照 これらのリンク

1
John smith