2013-07-15 34 views
5

używam wysyłki z Scala następująco:Jak przekazać% 2f do java.net.URI bez niego zamienia się/

val body = """{"count":5,"requeue":true,"encoding":"auto","truncate":50000}""" 
val req = url("http://localhost:4567/api/queues/%2f/myQueue/get").as_!("guest", "guest") << (body, "application/json") 

val http = new Http 

val resp = http(req as_str) 

%2f zostaje przekształcony w /, więc próbuje odpowiedzieć do /api/queues///myQueue/get zamiast do /api/queues/%2f/myQueue/get.

Jak mogę uniknąć tego poprawnie?

+2

Czy to może być powiązany problem? http://stackoverflow.com/questions/2765782/why-does-java-automatically-decode-2f-in- kodowane-filencje –

Odpowiedz

1

% znak jest używany w kodowaniu adresu URL. Tak więc% 2f jest dekodowany do /. spróbuj w przeglądarce, a zobaczysz.

Użyj% 25, ​​aby reprezentować znak%. na przykład

val req = url("http://localhost:4567/api/queues/%252f/myQueue/get") 
+0

To zostaje przekształcone w '/api/queues/%252f/cdm.mio/get 'zamiast'/api/queues /% 2f/cdm.mio/get' :( – Blake

+1

To interesujące.% 2f jest dekodowany, ale% 25 nie, oba są poprawne. –