Я хотел бы правильно кодировать URL: http://a.b.c/apis/POST /foo/bar
где POST /foo/bar
должен быть закодирован как: POST%20%2Ffoo%2Fbar
.Правильно кодировать распыление.http.Uri.Path?
Вот что я пробовал:
scala> import spray.http._
import spray.http._
scala> val base = Uri("http:/a.b.c")
base: spray.http.Uri = http:///a.b.c
scala> val path = Uri.Path("/apis/GET /foo/bar")
path: spray.http.Uri.Path = /apis/GET%20/foo/bar
scala> base.withPath(path)
res0: spray.http.Uri = http:///apis/GET%20/foo/bar
Но, выше показывает /foo/bar
как дополнительные поля пути, а не как GET%20%2Ffoo%2Fbar
.
Кроме того, я попытался:
scala> Uri.Path("/apis/" + java.net.URLEncoder.encode("GET /foo/bar", "UTF-8"))
res1: spray.http.Uri.Path = /apis/GET+%2Ffoo%2Fbar
Тем не менее, за https://stackoverflow.com/a/2678602/409976, пространство должно быть закодирован как %20
в пути части (как я понимаю). Кроме того, при использовании +
, а не %20
, веб-служба, к которой я обращаюсь, возвращает HTTP-500.