【发布时间】:2011-11-11 00:24:51
【问题描述】:
我正在使用 HttpClient 发送 GET 请求,但 + 未编码。
1。
如果我像这样传递未编码的query 参数字符串
URI uri = new URI(scheme, host, path, query, null);
HttpGet get = new HttpGet(uri);
然后+ 符号不被编码,它在服务器上作为空格接收。 url 的其余部分编码良好。
2.如果我像这样编码query字符串中的参数
param = URLEncoder.encode(param,"UTF-8");
然后我在服务器上得到一堆奇怪的符号,可能是因为url被编码了两次。
3.如果我只像这样用%B2替换+
query = query.replaceAll("\\+","%B2");
那么%B2在HttpClient执行GET的时候被编码
如何使用 Apache HttpClient 正确编码 Get 参数并确保 + 也已编码?
【问题讨论】:
-
您检查过这个question 及其答案了吗?
-
这个问题是指HttpClient 3,我使用的是Android支持的HttpClient 4。
标签: java android url-encoding apache-httpclient-4.x