如何在 Spray 中构建 Uri?

How to build a Uri in Spray?

我想使用一些查询参数通过 Spray 发出一个简单的 GET 请求

Get("http://localhost/user?email=abc+a@abc.com")

但是 + 表示 application/x-www-form-urlencoded 内容中的 space 导致对 http://localhost/user?email=abc a@abc.com 的调用(使用 space 而不是加号)。

我可以使用非 Spray java.net.URLEncoder 对 URL 进行编码,然后再将其传递给 GET 请求,但是我每次都这样做似乎很麻烦。

是否有应用查询参数并对它们进行编码的 Spray 方式?

Uri("http://localhost/").withQuery(Map("email"->"abc+a@abc.com")) 是构造 Uri 的好方法,但它也不对参数进行编码...

我用java.net.URLEncoder。我相信这是公认的方法。 如果能自动发生就好了!

实际上 Uri("http://localhost/").withQuery(Map("email"->"abc+a@abc.com")) 可以很好地编码特殊符号。

然而,Uri("http://localhost/").withQuery("email=abc+a@abc.com") 没有。