Android:解决客户端从服务器上获取数据乱码的方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android:解决客户端从服务器上获取数据乱码的方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3400字,纯文字阅读大概需要5分钟。
内容图文
向服务器发送HTTP请求,接收到的JSON包为response,用String content = 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\":\"网络超时!\"}"; } }
原文:http://blog.csdn.net/cooelf/article/details/38684597
内容总结
以上是互联网集市为您收集整理的Android:解决客户端从服务器上获取数据乱码的方法全部内容,希望文章能够帮你解决Android:解决客户端从服务器上获取数据乱码的方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。