这就是我正在做的(JAX-RS 1.0,Jersey 1.11):
import javax.ws.rs.core.UriBuilder;
System.out.println(UriBuilder.fromPath("/").queryParam("x", "%40").build());
System.out.println(UriBuilder.fromPath("/").queryParam("x", "100%").build());期望值:
/?x=%2540
/?x=100%25但实际输出是:
/?x=%40
/?x=100%25怎么一回事?如果这是UriBuilder的行为方式,那么解决方法是什么?
发布于 2012-01-28 09:01:42
我很惊讶,但它是这样工作的:
UriBuilder.fromUri("/").queryParam("x", "{value}").build(/* any text */);发布于 2012-01-27 16:24:18
问题可能是有一种额外的方法可以从编码的字符串中构建URI:
来自Javadocs: build():“字符串化的值中的所有'%‘字符都将被编码。构建器的状态不受影响”
buildFromEncoded():“字符串化的值中不跟两个十六进制数字的所有%字符都将被编码。”
URIBuilder.buildFromEncoded():http://jsr311.java.net/nonav/javadoc/javax/ws/rs/core/UriBuilder.html#buildFromEncoded%28java.lang.Object...%29
希望这能有所帮助
https://stackoverflow.com/questions/9029020
复制相似问题