下午尝试着从android客户端提交中文字符到服务器端,服务器是tomcat的,利用android自带的apache的httpclient组件,用post方式提交。
客户端提交请求的代码如下:
DefaultHttpClient mHttpClient = new DefaultHttpClient();
HttpPost mPost = new HttpPost("http://10.0.2.2:808/AndroidServer/userService.service");
List<BasicNameValuePair> pairs = new ArrayList<BasicNameValuePair>();
pairs.add(new BasicNameValuePair("method","addUser"));
pairs.add(new BasicNameValuePair("email","king@163.com"));
pairs.add(new BasicNameValuePair("password","112358"));
pairs.add(new BasicNameValuePair("site.province","北京市"));
pairs.add(new BasicNameValuePair("site.city","东城区"));
try {
mPost.setEntity(new UrlEncodedFormEntity(pairs,HTTP.UTF_8));
HttpResponse response = mHttpClient.execute(mPost);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
在服务器端提取中文数据后仍然是乱码,但奇怪的是,如果在PC客户端用main方法提交,完全相同的代码,服务器端却能正确提取中文字符,难道是android本身的问题?
期待高手能解答,下面说下解决方案吧,其实很简单,我在客户端把中文字符用URLEncoder.encode()进行转码,在服务器端用URLDecoder.decode()进行解码,这样就能正常的提取中文字符了,改动过的客户端代码如下:
pairs.add(new BasicNameValuePair("site.province",URLEncoder.encode("北京市")));
pairs.add(new BasicNameValuePair("site.city",URLEncoder.encode("东城区")));
分享到:
相关推荐
Android客户端发送请求中文乱码问题是指在Android客户端向服务器端提交请求时出现的中文乱码问题,这是由于在HTTP请求中,中文字符被编码为乱码字符所致。为了解决这个问题,我们可以从两个方面入手:客户端编码和...
在IT行业中,构建一个基于Java服务器和Android客户端的聊天应用是一项常见的任务,它涉及到网络通信、数据传输以及多线程编程等多个技术领域。本项目利用Java作为后端服务器,Android作为前端客户端,通过Socket实现...
在Android编程中,当应用程序需要向服务器发送包含中文字符的请求时,经常会出现中文乱码的问题。这主要是由于编码格式不一致导致的。本篇文章将详细介绍如何解决这一问题。 首先,我们要理解乱码产生的两个主要...
例如,服务器端使用的编码与客户端发送请求时使用的编码不同,或者服务器处理请求时没有正确地识别和转换编码,都可能导致乱码。为了解决这个问题,我们可以在请求到达控制器之前,通过拦截器进行干预。 以下是使用...
总的来说,Android客户端与服务器通信的基础流程包括以下步骤: 1. 创建一个`ServerSocket`实例并绑定到特定端口。 2. 在服务器端使用`accept()`方法监听并接收客户端连接请求。 3. 在客户端创建一个`Socket`实例,...
例如,如果服务器端使用的是ISO-8859-1编码方式,而Android客户端使用的是UTF-8编码方式,那么就会出现中文乱码的问题。 解决这个问题可以通过在请求头中添加Content-Type的头信息,指定编码方式为UTF-8。例如: `...
3. **Android 组播客户端**:Android客户端通过创建DatagramSocket并加入特定的组播组来接收组播数据。加入组播组通常使用`joinGroup(SocketAddress multicastAddress)`方法。客户端还需要设置一个DatagramPacket...
- MyEclipse 2015在处理Servlet中的GET和POST请求时可能存在中文乱码问题,而MyEclipse 10则需要手动处理。 7. **其他工具**: - Eclipse(adt bundle)的安装,适用于Android开发,特别是与Android Studio配合...
4. 将预定义的字符串("服务器已经接收到你的请求")编码为UTF-8格式,并写入`OutputStream`,确保在Linux系统中不会有乱码问题。 5. 关闭`OutputStream`和`Socket`,释放资源。 **Android客户端实现** 在Android...
在Android客户端,为了避免乱码,我们需要确保所有字符串都以UTF-8编码,同时在发送请求前设置请求头的字符集。例如,在使用`HttpURLConnection`时,可以这样做: ```java connection.setRequestProperty("Content-...
GET和POST主要用于客户端(如Android前端)与服务器之间的通信,而处理中文乱码问题则是一个额外的技术挑战。 GET方法是HTTP中最基础的请求类型,通常用于获取服务器上的资源。它将参数附加到URL中,以问号(?)...
在Android和服务器交互时,URLEncodedUtils乱码问题主要出现在通过URL参数传递中文数据时,这通常涉及到字符编码不一致的问题。以下是一些关键知识点和解决方案: 1. **字符编码基础**: - UTF-8:一种广泛使用的...
在Android开发过程中,POST数据时可能会遇到编码问题,特别是涉及到非ASCII字符时,如中文、特殊符号等。这里我们详细探讨一下如何解决Android POST数据时遇到的UTF-8编码(乱码)问题。 首先,问题的根源在于...
3. 数据编码:确保客户端和服务器之间数据编码一致,避免乱码问题。 4. 数据包边界:由于网络传输的无界性,需要定义数据包边界,以便正确解析数据。 5. 错误重试:在网络不稳定时,可以设置重试机制,提高通信成功...
在处理中文乱码问题时,GET请求中的中文字符可能会因为浏览器的默认编码(如UTF-8)和服务器的默认编码(如ISO-8859-1)不一致导致乱码。使用HttpClient框架则能避免这种问题,因为它默认使用UTF-8编码。而对于POST...
1. **监听与连接**:Android FTP服务器需监听指定端口(如21),接收客户端连接请求,建立TCP连接。 2. **用户认证**:支持用户名/密码验证,确保只有授权的用户能够访问服务器资源。 3. **文件操作**:提供文件...
因此,确保服务器和客户端之间的一致性至关重要。 1. **HTTP请求头设置**:在发送HTTP GET或POST请求时,我们通常需要在请求头中指定`Content-Type`,告知服务器我们期望的数据格式。例如,对于UTF-8编码的JSON数据...