【发布时间】:2011-02-03 05:26:14
【问题描述】:
所以我有一些像这样使用 Jakarta HttpClient 的 Java 代码:
URI aURI = new URI( "http://host/index.php?title=" + title + "&action=edit" );
GetMethod aRequest = new GetMethod( aURI.getEscapedPathQuery());
问题是,如果title 包含任何与号 (&),它们会被视为参数分隔符,并且请求会变得混乱......如果我将它们替换为 URL 转义的等效 %26,那么就会得到由 getEscapedPathQuery() 双重转义到 %2526。
我目前正在通过以后基本上修复损坏来解决这个问题:
URI aURI = new URI( "http://host/index.php?title=" + title.replace("&", "%26") + "&action=edit" );
GetMethod aRequest = new GetMethod( aURI.getEscapedPathQuery().replace("%2526", "%26"));
但是必须有更好的方法来做到这一点,对吧?请注意,标题可以包含任意数量的不可预测的 UTF-8 字符等,因此必须转义其他所有内容。
【问题讨论】:
-
Escaping & in a URL的可能重复
标签: java http url escaping apache-commons-httpclient