Android http請求例子、Unicode轉UTF-8 java代碼

文章轉自:http://blog.csdn.net/wyzxk888/article/details/7337649

Android項目經常是C/S模型的,因此需要向服務器發出http請求,收藏一個http請求的例子以便以後可以用。

假設發出的請求使用get方法,服務器傳回JSON數據,解析代碼如下:

[java] view plaincopy
  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 plaincopy
  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. }  
發佈了15 篇原創文章 · 獲贊 12 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章