0
URLを正しくエンコードする:http://a.b.c/apis/POST /foo/bar
POST /foo/bar
は、POST%20%2Ffoo%2Fbar
としてエンコードする必要があります。spray.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
しかし、追加のパスフィールドとしてではなく、GET%20%2Ffoo%2Fbar
上記のようにショー/foo/bar
:
は、ここに私が試したものです。
はまた、私が試した:
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
ではなく+
を使用している場合、私がアクセスしているWebサービスはHTTP-500を返します。