我有这段代码
httpUriRequest = new HttpPost(address.toString());
((HttpPost)httpUriRequest).setEntity(new ByteArrayEntity(restParams.postData()));
httpUriRequest.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
当我发送"asd+asd"
服务器获取"asdasd"
或"asd asd"
时。此外,我尝试通过rest-client将此字符串发送到服务器,它运行良好。
那么问题是什么?任何人都可以建议一些解决方案吗?
答案 0 :(得分:0)
它用空格替换“+”因为在HTML URL中编码“+”符号被视为空格并且它总是被空格替换。
基本上你需要确保传递的变量是编码的('%'字符是URL编码中的特殊字符)。
任何特殊字符 - %,?和&等...都需要进行编码。它们用'%'和十六进制数编码。所以'%'应该变成'%25','&'成为'%26'等等。
退房:escape, or encodeURI / encodeURIComponent for why you should avoid using escape.
一种解决方案是您将请求网址发送到Post方法并以NameValuePair的形式发布您的请求。