2016-04-07 6 views
2

Ich habe durch den Quellcode gegraben, aber ich kann einfach keinen Grund für dieses Verhalten finden.Android Uri.Builder mit "/" anstelle von "//" nach Schema

Nach Use URI builder in Android or create URL with variables sollte dies absolut einwandfrei funktionieren.

, ich sage https://www.gravatar.com/eac16c9fc481cb6825f8b3a35f916b5c.json

verbinden möchten diesen Code dann, ich habe die Adresse des Erhaltens drei getrennte Wege zu drucken.

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()); 

Die ersten beiden Druck in Ordnung, aber das dritte ist, was ich verwenden möchten, aber es ist nicht richtig, wie Sie http:/www statt 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 

sehen, mit denen ich kompilieren API 23, und ich habe mir nicht die Mühe gemacht, eine andere API-Version auszuprobieren, weil ich nur verwirrt bin, warum das nicht funktionieren würde.

+1

Sie müssen den URL-Pfad auf die 'authority()' setzen, statt auf den 'Pfad', der Ihnen immer einen Schrägstrich von 1 gibt. entferne '.path (" www.gravatar.com ")' add 'authority (" www.gravatar.com ")', [Hier für weitere Informationen] [1] [1]: http: // developer. android.com/guide/topics/providers/content-provider-creating.html#ContentURI –

+0

@Rod_Algonquin Ohh, ich sehe das jetzt in dem anderen Post :) Hoppla! Vielen Dank. Fühlen Sie sich frei zu antworten. –

Antwort

6

Sie müssen den URL-Pfad auf die authority() setzen, statt auf path, die Ihnen immer einen Schrägstrich geben wird. entfernen .path("www.gravatar.com") hinzufügen authority("www.gravatar.com"),

Here ist mehr Info, warum Autorität verwendet wird.

+0

Ich könnte auch über URIs auf Wikipedia gelesen haben und gesehen haben, dass die Behörde dem Schema folgt. Danke noch einmal. –