如何在不将其转换为“/”的情况下将“%2f”传递给java.net.URI?

5

我正在使用Scala中的Dispatch,代码如下:

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 会被转换成 /,所以它试图将数据提交到 /api/queues///myQueue/get 而不是 /api/queues/%2f/myQueue/get。要如何正确地进行转义?

2
这可能是一个相关的问题吗?https://dev59.com/E03Sa4cB1Zd3GeqPwZU1 - Nat Ritmeyer
1个回答

1

%符号用于URL编码。因此,%2f会被解码为/。在浏览器中尝试一下就可以看到。

使用%25来表示%符号。例如:

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

这会变成/api/queues/%252f/cdm.mio/get而不是/api/queues/%2f/cdm.mio/get :( - Blake
1
很有趣。%2f被解码了,但%25没有,两者都是有效的。 - Johnny Everson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接