[英]HttpPost in Android - unrecognized characters
我试图将一条消息(包含英文和中文)发布到servlet。 如果我使用Java Application发布消息,它运行良好。
public class PostText
{
public final static String HTTP_PORT = "...";
public static void main(String[] args) throws Exception
{
String message = "...";
System.out.println(post(message));
}
public static String post(String message)
{
HttpPost httpRequest = new HttpPost(HTTP_PORT);
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("input", message));
try {
httpRequest.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
org.apache.http.HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
String strResult = EntityUtils.toString(httpResponse.getEntity());
return strResult;
} else {
System.out.println(httpResponse.getStatusLine().getStatusCode());
}
} catch (ClientProtocolException e) {
// ...
} catch (UnsupportedEncodingException e) {
} catch (IOException e) {
// ...
}
return null;
}
}
当我在Android中使用HttpPost时,服务器将获得无法识别的字符,例如“æ¸å大å|”。 我试图使用HttpURLConnection发布消息,结果还包含无法识别的字符。 Java应用程序中的HttpClient与Android应用程序中的HttpClient有什么区别? 这很奇怪。
非常感谢。
问题解决了。 我使用Wireshark捕获发送到服务器的包。 Java应用程序中HttpClient的标题是:
User-Agent: Apache-HttpClient/4.2.1(java 1.5)
虽然Android应用程序中HttpClient的标题是:
User-Agent: Apache-httpclient/unavailable (java 1.4)
所以我猜Android中的HttpClient版本并不是最新版本。 来自Apache HttpClient 4.1我下载了一个Pre-compiled.jar库并在我的项目中使用它。 问题解决了。 谢谢大家。
差异可能在于Android处理字符串的方式。
如果您的源代码不是UTF-8,这可能会导致问题:String message =“...”;
我会尝试将字符串外部化为
String message = myContext.getString(R.string.message);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.