我试图通过http请求发送特殊字符,现在我使用Loopj作为我的http客户端。问题是,当我尝试发送特殊字符,即“áéíóú”时,请求会出现“ÈÌÛ˙”字符,这会导致服务器端出现一些问题。Loopj通过请求发送特殊字符
我已经通过Loopj代码,并找不到任何相关的重新编码我的字符串或任何类似的东西。在最糟糕的情况下,它似乎会以UTF-8编码,它实际上支持这些字符。
希望任何人都可以提供帮助。
最好的问候。
我试图通过http请求发送特殊字符,现在我使用Loopj作为我的http客户端。问题是,当我尝试发送特殊字符,即“áéíóú”时,请求会出现“ÈÌÛ˙”字符,这会导致服务器端出现一些问题。Loopj通过请求发送特殊字符
我已经通过Loopj代码,并找不到任何相关的重新编码我的字符串或任何类似的东西。在最糟糕的情况下,它似乎会以UTF-8编码,它实际上支持这些字符。
希望任何人都可以提供帮助。
最好的问候。
你为什么不使用这种方法:
HttpParams httpParameters = new BasicHttpParams();
HttpProtocolParams.setContentCharset(httpParameters, HTTP.UTF_8);
HttpProtocolParams.setHttpElementCharset(httpParameters, HTTP.UTF_8);
HttpClient client = new DefaultHttpClient(httpParameters);
client.getParams().setParameter("http.protocol.version", HttpVersion.HTTP_1_1);
client.getParams().setParameter("http.socket.timeout", new Integer(2000));
client.getParams().setParameter("http.protocol.content-charset", HTTP.UTF_8);
httpParameters.setBooleanParameter("http.protocol.expect-continue", false);
HttpPost request = new HttpPost("http://www.server.com/some_script.php?sid=" + String.valueOf(Math.random()));
request.getParams().setParameter("http.socket.timeout", new Integer(5000));
List<NameValuePair> postParameters = new ArrayList<NameValuePair>();
// you get this later in php with $_POST['value_name']
postParameters.add(new BasicNameValuePair("value_name", "value_val"));
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters, HTTP.UTF_8);
request.setEntity(formEntity);
HttpResponse response = client.execute(request);
in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer sb = new StringBuffer("");
String line = "";
String lineSeparator = System.getProperty("line.separator");
while ((line = in.readLine()) != null) {
sb.append(line);
sb.append(lineSeparator);
}
in.close();
String result = sb.toString();
以上代码的用户说,这个代码工作般的魅力。而且我认为如果您遇到了问题,那么您应该改变方法来解决您的问题。 看到我觉得这有用的链接:Android default charset when sending http post/put - Problems with special characters
是的,使用上述方法可能有效,但这不是OP所要求的;他们想知道如何使用AsyncHttpClient解决问题;不是家庭解决方案。 也许OP必须使用LoopJ?例如,我在我的项目中使用LoopJ,并遇到同样的问题。当LoopJ应该能够处理这个时,我不会重写所有的API代码。 – SuperStubbs 2016-07-21 19:31:58
我猜你的意思是AsyncHttpClient库,是否正确?
AHC默认使用UTF-8编码所有I/O。由于缺乏源代码,我想指出你去调查下:
我希望这可以帮助您快速找到问题。
我相信匈牙利字符因为编码不匹配而混乱。 – 2014-10-22 00:26:28
请提供构建http请求的代码 – slf 2014-10-30 14:30:55
请包含一些代码,以便我们可以帮助您 – Hamad 2014-10-31 05:23:35