文章轉自:http://blog.csdn.net/wyzxk888/article/details/7337649
Android項目經常是C/S模型的,因此需要向服務器發出http請求,收藏一個http請求的例子以便以後可以用。
假設發出的請求使用get方法,服務器傳回JSON數據,解析代碼如下:
- HttpClient client = new DefaultHttpClient();
- HttpGet httpGet = new HttpGet(req_url);
- try {
- HttpResponse response = client.execute(httpGet);
- int statusCode = response.getStatusLine().getStatusCode();
- if (statusCode != HttpStatus.SC_OK) {
- Log.d("AD", "statusCode is " + statusCode);
- return null;
- }
- else {
- HttpEntity entity = response.getEntity();
- if (entity != null) {
- InputStream inputStream = entity.getContent();
- StringBuilder builder = new StringBuilder();
- BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
- for (String s = bufferedReader.readLine(); s != null; s = bufferedReader.readLine()) {
- builder.append(s);
- }
- String result = builder.toString();
- Log.d("AD", "Server return " + result);
- return result;
- }
- }
- } catch (Exception e) {
- httpGet.abort();
- Log.d("AD", "when http get, exception is " + e.getMessage());
- }
- return null;
注:JSON數據格式其實就是String。可以用JSONObject類進行轉化。
有時候服務器傳回的數據中會遇到傳回數據爲Unicode的情況,爲此需要進行Unicode轉UTF-8的轉化,我在項目中遇見過,爲此收藏一份轉化 java 代碼,便於以後使用:
- private static String decodeUnicode(String theString) {
- char aChar;
- int len = theString.length();
- StringBuffer outBuffer = new StringBuffer(len);
- for (int x = 0; x < len;) {
- aChar = theString.charAt(x++);
- if (aChar == '\\') {
- aChar = theString.charAt(x++);
- if (aChar == 'u') {
- // Read the xxxx
- int value = 0;
- for (int i = 0; i < 4; i++) {
- aChar = theString.charAt(x++);
- switch (aChar) {
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- value = (value << 4) + aChar - '0';
- break;
- case 'a':
- case 'b':
- case 'c':
- case 'd':
- case 'e':
- case 'f':
- value = (value << 4) + 10 + aChar - 'a';
- break;
- case 'A':
- case 'B':
- case 'C':
- case 'D':
- case 'E':
- case 'F':
- value = (value << 4) + 10 + aChar - 'A';
- break;
- default:
- throw new IllegalArgumentException(
- "Malformed \\uxxxx encoding.");
- }
- }
- outBuffer.append((char) value);
- } else {
- if (aChar == 't')
- aChar = '\t';
- else if (aChar == 'r')
- aChar = '\r';
- else if (aChar == 'n')
- aChar = '\n';
- else if (aChar == 'f')
- aChar = '\f';
- outBuffer.append(aChar);
- }
- } else
- outBuffer.append(aChar);
- }
- return outBuffer.toString();
- }