在链接中,我有{
和}
个字符。在chrome / ff(和ie?)中,当我点击该链接时,它会将{
替换为%7B
,将}
替换为%7D
。不幸的是,在歌剧中它没有。如果我URLEncoder.encode
链接,那么%7B
在其他浏览器中变为%257B
(因此我获得了404 @该资源)。所以,当我点击歌剧中的链接时,我得到java.lang.IllegalArgumentException: Illegal character in path at index
。我很困惑:
{
和}
?编辑:我们正在使用jersey,正如堆栈跟踪中所述:
java.lang.IllegalArgumentException: Illegal character in path at index
java.net.URI.create(URI.java:859)
javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:95)
com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:879)
com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:843)
com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:804)
答案 0 :(得分:0)
令人困惑(即命名错误)URLEncoder用于将数据作为参数传递,而不是用于编码URL本身。
我们使用org.apache.commons.httpclient.util.URIUtil.encodePath但现在看起来已经消失了(从1.4开始?),建议改为使用java.net.URI: What happened to URIUtil.encodePath from commons-httpclient-3.1?