23

次のURIを構築したい -

https://10.112.88.182:8443/Vehicle/services/socialService/login

...

Builder builder = new Builder();
builder.scheme(Constants.URL_SCHEME);
builder.authority(host);
builder.appendPath(service + "/" +method);
return builder.build().toString();

どこ

  • URL_SCHEME-https
  • host-10.112.88.182:8443/Vehicle/services/
  • service-socialService
  • method-login

このコードを実行すると、次の URI を取得します -

https://10.112.88.182%3A8443%2FVehicle%2Fservices%2F/socialService%2Flogin

/に置き換えられ%2F、次の:ように置き換えられます%3A

4

3 に答える 3

38

それがどのように機能するかUri.Builderです。%xx16 進値に特別な意味を持つ安全でない URL 文字をエンコードします。

すでに適切にエンコードされている URI 部分をエンコードしないようにするにはencoded、ビルダー関数のバージョンを使用します。

builder.encodedAuthority(host);
builder.appendEncodedPath(service + "/" +method);

しかし、すべての URL 部分はすでに準備ができており、それ以上のエンコードは必要ないため、通常の部分を使用しStringBuilderて部分を連結する方が簡単です。

于 2013-09-06T09:46:00.220 に答える