4

ソース コードを調べましたが、この動作の理由がわかりません。

Use URI builder in Android or create URL with variablesによると、これはまったく問題なく動作するはずです。

に接続したいと言うhttps://www.gravatar.com/eac16c9fc481cb6825f8b3a35f916b5c.json

次に、このコードを使用して、そのアドレスを取得する 3 つの方法を出力します。

String userHash = "eac16c9fc481cb6825f8b3a35f916b5c";

String correctUrl = "https://www.gravatar.com/" + userHash + ".json";
Uri.Builder builder1 = Uri.parse(correctUrl).buildUpon();

Uri.Builder builder2 = new Uri.Builder()
        .scheme("https")
        .path("www.gravatar.com")
        .appendPath(userHash + ".json");

Log.i("Correct URL", correctUrl);
Log.i("Builder 1 URL", builder1.toString());
Log.i("Builder 2 URL", builder2.toString());

最初の 2 つは問題なく出力されますが、3 番目のものは私が使用したいものですが、http:/www代わりにご覧のとおり正しくありません。http://www

I/Correct URL:   https://www.gravatar.com/eac16c9fc481cb6825f8b3a35f916b5c.json
I/Builder 1 URL: https://www.gravatar.com/eac16c9fc481cb6825f8b3a35f916b5c.json
I/Builder 2 URL: https:/www.gravatar.com/eac16c9fc481cb6825f8b3a35f916b5c.json

私は API 23 でコンパイルしていますが、なぜこれが機能しないのか混乱しているだけなので、別の API バージョンを試す気にはなりませんでした。

4

1 に答える 1

11

URL パスを に設定する必要がありauthority()ますpath。削除.path("www.gravatar.com")追加authority("www.gravatar.com"),

権限が使用される理由の詳細は次のとおりです

于 2016-04-07T18:45:47.853 に答える