android - Android 中的 HttpPost - 无法识别的字符

标签 android http http-post

我正在尝试向 servlet 发送一条消息(包含英文和中文)。 如果我使用 Java 应用程序发布消息,效果很好。

       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 Application中HttpClient的header是:

User-Agent: Apache-HttpClient/4.2.1(java 1.5)

而Android应用中HttpClient的header是:

User-Agent: Apache-httpclient/unavailable (java 1.4)

所以我猜 android 中的 HttpClient 版本不是最新的。来自 Apache HttpClient 4.1我下载了一个 Pre-compiled.jar 库并在我的项目中使用它。问题解决了。谢谢大家。

关于android - Android 中的 HttpPost - 无法识别的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12926613/

相关文章:

java - 通过单击菜单项打开特定文件夹

java - Java EE 7 中的 request.login() ?

php - 如何使用 php 查找特定 IP 中的 HTTP 进程总数?

java - 如何提取和比较 HttpPost 响应字符串?

android - 谷歌地图代码中的 BadParcelableException

c# - Xamarin 自定义 DatePicker 失去绑定(bind)

http - Python 3,http.client HTTP 错误 400

php - 在 javascript http post 请求后处理不同的 php 响应

java - 使用 Spring MVC Web 应用程序强制以 html 形式进行 UTF8 编码

android - 可以将文件从 Windows 应用程序直接写入 Android SD 卡吗?