Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Uri Builder in android - '/' replaced by '%2F' and ":" is replaced by "%3A"

Tags:

I want to build the following 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(); 

where

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

When this code runs I get the following URI -

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

/ is replaced by %2F and : is replaced by %3A

like image 481
Manik Avatar asked Sep 06 '13 09:09

Manik


1 Answers

That's how Uri.Builder works. It encodes non-safe URL characters with special meaning to their %xx hex values.

To prevent encoding URI parts that are already properly encoded, use the encoded versions of builder functions:

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

But since all your URL parts are already ready and don't need any further encoding, it's easier to just use a regular StringBuilder to concatenate the parts.

like image 137
laalto Avatar answered Oct 01 '22 05:10

laalto