Android:解决客户端从服务器上获取数据乱码的方法
2014-10-23 17:41
417 查看
向服务器发送HTTP请求,接收到的JSON包为response,用String content = EntityUtils.toString(response.getEntity(),"utf-8");解码还是出现了中文乱码,在后面加了
也无济于事。想到服务器好像是用URLENCODER编了码的,怀着试一试的态度在return后面加了条URLDecoder.decode(content,"utf-8");果然有效!不过还是不太明白URLDecoder.decode(content,"utf-8")和EntityUtils.toString(response.getEntity(),"utf-8")在解码的时候有什么区别。下面是网络端的代码:
String name = new String(response.getBytes("iso-8859-1"), "UTF-8");
也无济于事。想到服务器好像是用URLENCODER编了码的,怀着试一试的态度在return后面加了条URLDecoder.decode(content,"utf-8");果然有效!不过还是不太明白URLDecoder.decode(content,"utf-8")和EntityUtils.toString(response.getEntity(),"utf-8")在解码的时候有什么区别。下面是网络端的代码:
package com.trilink.ibeaconlocationdisplay.utils; import java.io.UnsupportedEncodingException; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.HttpConnectionParams; import org.apache.http.util.EntityUtils; import android.util.Log; public class NetworkService { private static String TAG = "NetworkService"; //private static String url_ip = ServerUrl.SERVER_ADRESS+"UserInfoServlet?"; //private static String url_ip = "http://192.168.1.231:8080/indoor/"; /** * 释放资源 */ public static void cancel() { Log.i(TAG, "cancel!"); // if(conn != null) { // conn.cancel(); // } } //无参数传递的 public static String getPostResult(String url){ //创建http请求对象 HttpPost post = new HttpPost(url); //创建HttpParams以用来设置HTTP参数 BasicHttpParams httpParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParams,10 * 1000); HttpConnectionParams.setSoTimeout(httpParams, 10 * 1000); //创建网络访问处理对象 HttpClient httpClient = new DefaultHttpClient(httpParams); try{ //执行请求参数 HttpResponse response = httpClient.execute(post); //判断是否请求成功 if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { //获得响应信息 String content = EntityUtils.toString(response.getEntity()); return URLDecoder.decode(content,"utf-8"); } }catch(Exception e) { e.printStackTrace(); return "{\"status\":405,\"resultMsg\":\"网络超时!\"}"; } finally { //释放网络连接资源 httpClient.getConnectionManager().shutdown(); } return "{\"status\":405,\"resultMsg\":\"网络超时!\"}"; } //有参数传递的 public static String getPostResult(String url, List<NameValuePair> paramList){ UrlEncodedFormEntity entity = null; try { entity = new UrlEncodedFormEntity(paramList,"utf-8"); } catch (UnsupportedEncodingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } //创建http请求对象 HttpPost post = new HttpPost(url); BasicHttpParams httpParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParams, 10 * 1000); HttpConnectionParams.setSoTimeout(httpParams, 10 * 1000); post.setEntity(entity); //创建网络访问处理对象 HttpClient httpClient = new DefaultHttpClient(httpParams); try{ //执行请求参数 HttpResponse response = httpClient.execute(post); //判断是否请求成功 if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { //获得响应信息 String content = EntityUtils.toString(response.getEntity(),"UTF-8"); return URLDecoder.decode(content,"utf-8"); } }catch(Exception e) { e.printStackTrace(); return "{\"status\":405,\"resultMsg\":\"网络超时!\"}"; } finally { //释放网络连接资源 httpClient.getConnectionManager().shutdown(); } return "{\"status\":405,\"resultMsg\":\"网络超时!\"}"; } }
相关文章推荐
- Android:解决客户端从服务器上获取数据乱码的方法
- android 获取网络数据,回传到本地用TextView显示乱码问题解决方法
- Android:解决client从server上获取数据乱码的方法
- android 客户端发服务器发送中文请求,服务端是乱码的解决方法
- Android 从网络中获取数据时 产生部分数据乱码的解决
- 获取客户端ip地址方法和通过curl在命令行提交post数据到服务器
- android客户端向mysql数据库插入中文乱码(解决方法)
- 解决android中客户端和服务器端的数据传输中文乱码问题
- Oracle客户端使用sqlldr导数据中文乱码问题解决方法
- C#调用C++dll文件获取数据得到乱码的解决方法
- NetBox环境下ajax用get获取数据,中文乱码的问题解决:对象不支持此属性或方法: 'Response.CharSet'
- Android 从网络中获取数据时 产生部分数据乱码的解决
- android HttpPost传JSON数据中文乱码的解决方法
- android客户端通过Get方式提交参数给服务器,使用URL和HttpURLConnection实现,以及乱码问题解决
- Oracle 客户端数据乱码解决方法
- 解决android中客户端和服务器端的数据传输中文乱码问题
- Xmpp协议 OpenFire服务器 Asmack Android客户端 一些Bug的解决方法
- Android客户端获取服务器的json数据(二)
- android客户端和网站数据交互的实现(基于Http协议获取数据方法)
- 客户端改变状态,服务器服务器端读不到数据的问题,大家有什么好的解决方法.