Android http请求例子、Unicode转UTF-8 java代码

本文提供了一个使用Android发出GET请求并接收JSON数据的示例,包括如何解析服务器返回的数据。此外,还分享了将Unicode转换为UTF-8的Java代码,以应对服务器可能返回的Unicode编码数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章转自:http://blog.youkuaiyun.com/wyzxk888/article/details/7337649

Android项目经常是C/S模型的,因此需要向服务器发出http请求,收藏一个http请求的例子以便以后可以用。

假设发出的请求使用get方法,服务器传回JSON数据,解析代码如下:

[java]  view plain copy
  1. HttpClient client = new DefaultHttpClient();  
  2. HttpGet httpGet = new HttpGet(req_url);  
  3. try {  
  4.     HttpResponse response = client.execute(httpGet);  
  5.     int statusCode = response.getStatusLine().getStatusCode();  
  6.     if (statusCode != HttpStatus.SC_OK) {  
  7.         Log.d("AD""statusCode is " + statusCode);  
  8.         return null;  
  9.     }   
  10.     else {  
  11.         HttpEntity entity = response.getEntity();  
  12.         if (entity != null) {  
  13.             InputStream inputStream = entity.getContent();  
  14.             StringBuilder builder = new StringBuilder();  
  15.             BufferedReader bufferedReader  = new BufferedReader(new InputStreamReader(inputStream));  
  16.             for (String s = bufferedReader.readLine(); s != null; s = bufferedReader.readLine()) {  
  17.                 builder.append(s);  
  18.             }  
  19.             String result = builder.toString();  
  20.                       
  21.             Log.d("AD""Server return " + result);  
  22.             return result;  
  23.                       
  24.         }  
  25.     }   
  26. catch (Exception e) {  
  27.     httpGet.abort();  
  28.     Log.d("AD""when http get, exception is " + e.getMessage());  
  29. }  
  30. return null;  

注:JSON数据格式其实就是String。可以用JSONObject类进行转化。


有时候服务器传回的数据中会遇到传回数据为Unicode的情况,为此需要进行Unicode转UTF-8的转化,我在项目中遇见过,为此收藏一份转化 java 代码,便于以后使用:

[java]  view plain copy
  1. private static String decodeUnicode(String theString) {  
  2.     char aChar;  
  3.     int len = theString.length();  
  4.     StringBuffer outBuffer = new StringBuffer(len);  
  5.     for (int x = 0; x < len;) {  
  6.         aChar = theString.charAt(x++);  
  7.         if (aChar == '\\') {  
  8.             aChar = theString.charAt(x++);  
  9.             if (aChar == 'u') {  
  10.                 // Read the xxxx  
  11.                 int value = 0;  
  12.                 for (int i = 0; i < 4; i++) {  
  13.                     aChar = theString.charAt(x++);  
  14.                     switch (aChar) {  
  15.                     case '0':  
  16.                     case '1':  
  17.                     case '2':  
  18.                     case '3':  
  19.                     case '4':  
  20.                     case '5':  
  21.                     case '6':  
  22.                     case '7':  
  23.                     case '8':  
  24.                     case '9':  
  25.                         value = (value << 4) + aChar - '0';  
  26.                         break;  
  27.                     case 'a':  
  28.                     case 'b':  
  29.                     case 'c':  
  30.                     case 'd':  
  31.                     case 'e':  
  32.                     case 'f':  
  33.                         value = (value << 4) + 10 + aChar - 'a';  
  34.                         break;  
  35.                     case 'A':  
  36.                     case 'B':  
  37.                     case 'C':  
  38.                     case 'D':  
  39.                     case 'E':  
  40.                     case 'F':  
  41.                         value = (value << 4) + 10 + aChar - 'A';  
  42.                         break;  
  43.                     default:  
  44.                         throw new IllegalArgumentException(  
  45.                                 "Malformed   \\uxxxx   encoding.");  
  46.                     }  
  47.   
  48.                 }  
  49.                 outBuffer.append((char) value);  
  50.             } else {  
  51.                 if (aChar == 't')  
  52.                     aChar = '\t';  
  53.                 else if (aChar == 'r')  
  54.                     aChar = '\r';  
  55.                 else if (aChar == 'n')  
  56.                     aChar = '\n';  
  57.                 else if (aChar == 'f')  
  58.                     aChar = '\f';  
  59.                 outBuffer.append(aChar);  
  60.             }  
  61.         } else  
  62.             outBuffer.append(aChar);  
  63.     }  
  64.     return outBuffer.toString();  
  65. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值