229

私はAndroidアプリを開発しています。アプリが API 要求を行うための URI を作成する必要があります。変数を URI に入れる別の方法がない限り、これが私が見つけた最も簡単な方法です。を使用する必要があることがわかりましたがUri.Builder、その方法がよくわかりません。私のURLは次のとおりです。

http://lapi.transitchicago.com/api/1.0/ttarrivals.aspx?key=[redacted]&mapid=value 

私のスキームは http、権限はlapi.transitchicago.com、パスは/api/1.0、パスセグメントはttarrivals.aspx、クエリ文字列はkey=[redacted]&mapid=valueです。

私のコードは以下の通りです:

Intent intent = getIntent();
String value = intent.getExtras().getString("value");
Uri.Builder builder = new Uri.Builder();
builder.scheme("http")
    .authority("www.lapi.transitchicago.com")
    .appendPath("api")
    .appendPath("1.0")
    .appendPath("ttarrivals.aspx")
    .appendQueryParameter("key", "[redacted]")
    .appendQueryParameter("mapid", value);

できることは理解していますがURI.add、それを に統合するにはどうすればよいUri.Builderですか? URI.add(scheme)などのすべてを追加する必要がURI.add(authority)ありますか? それとも、それはそれを行う方法ではありませんか?また、変数を URI/URL に追加する簡単な方法はありますか?

4

8 に答える 8

468

次の URL を作成するとします。

https://www.myawesomesite.com/turtles/types?type=1&sort=relevance#section-name

でこれを構築するUri.Builderには、次のようにします。

Uri.Builder builder = new Uri.Builder();
builder.scheme("https")
    .authority("www.myawesomesite.com")
    .appendPath("turtles")
    .appendPath("types")
    .appendQueryParameter("type", "1")
    .appendQueryParameter("sort", "relevance")
    .fragment("section-name");
String myUrl = builder.build().toString();
于 2013-10-03T20:01:41.610 に答える
4

を使用すると、appendEncodePath()よりも複数の行を節約できますappendPath()。次のコード スニペットは、この URL を構築します。http://api.openweathermap.org/data/2.5/forecast/daily?zip=94043

Uri.Builder urlBuilder = new Uri.Builder();
urlBuilder.scheme("http");
urlBuilder.authority("api.openweathermap.org");
urlBuilder.appendEncodedPath("data/2.5/forecast/daily");
urlBuilder.appendQueryParameter("zip", "94043,us");
URL url = new URL(urlBuilder.build().toString());
于 2016-10-07T07:34:16.590 に答える