Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android下網絡請求的兩個封裝類

Android下網絡請求的兩個封裝類

編輯:關於Android編程

1、背景介紹

我們在Activity和Fragment中做網絡請求的時候,往往用到線程和handler消息處理機制等做處理。這裡,我們將網絡請求,一個get和一個post請求,使用線程封裝一下。這樣就剝離開了Activity中的代碼量,將復雜的代碼,封裝在不同的類中,實現一個類的單一原則。


2、GET請求封裝

/**
 * GET提交的網絡請求
*
* 傳遞過來主UI線程的消息處理器,經過線程處理之後,返回一個消息給主UI線程
* 在返回的msg信息中,what封裝了返回的狀態碼信息
* 1001代表成功,404代表客戶端請求錯誤,100代表IO處理錯誤
*
* obj信息封裝了請求的結果,返回值為String類型 * * @author ljtyzhr * */ public class HttpGetThread implements Runnable { /** handler處理 */ private Handler handler; /** 網絡請求地址 */ private String url; /** * 使用Get提交的構造方法 * * @param handler * 消息對象 * @param url * 請求的url地址 */ public HttpGetThread(Handler handler, String url) { this.handler = handler; this.url = url; } @Override public void run() { // 獲取我們回調主ui的message Message msg = handler.obtainMessage(); try { String result = HttpRequestUtils.doGet(url); msg.what = ConstantValues.GET_NET_SUCCEED; msg.obj = result; } catch (ClientProtocolException e) { msg.what = 404; } catch (IOException e) { msg.what = 100; } // 給主ui發送消息傳遞數據 handler.sendMessage(msg); } }

3、POST請求封裝

/**
 * POST提交的網絡請求
*
* 傳遞過來主UI線程的消息處理器,經過線程處理之後,返回一個消息給主UI線程
* 在返回的msg信息中,what封裝了返回的狀態碼信息
* 1001代表成功,404代表客戶端請求錯誤,100代表IO處理錯誤
*
* obj信息封裝了請求的結果,返回值為String類型 * * @author ljtyzhr * */ public class HttpPostThread implements Runnable { /** handler處理 */ private Handler handler; /** 網絡請求地址 */ private String url; /** * 使用post提交的構造方法 * * @param handler * 消息對象 * @param url * 請求的url地址 */ public HttpPostThread(Handler handler, String url) { this.handler = handler; this.url = url; } @Override public void run() { // 獲取我們回調主ui的message Message msg = handler.obtainMessage(); try { String result = HttpRequestUtils.doPost(url); msg.what = ConstantValues.GET_NET_SUCCEED; msg.obj = result; } catch (ClientProtocolException e) { msg.what = 404; } catch (IOException e) { msg.what = 100; } // 給主ui發送消息傳遞數據 handler.sendMessage(msg); } }

4、使用方式

看到上面的參數信息,我們大致知道需要一些怎樣的參數,這裡簡單介紹如何使用這兩個封裝類:

給出一個Get請求的實例:

HttpGetThread httpGetThread = new HttpGetThread(handler, url, this);
new Thread(httpGetThread).start();

handler的處理機制:

private Handler handler = new Handler() {
		public void handleMessage(android.os.Message msg) {
			switch (msg.what) {
			case ConstantValues.GET_NET_SUCCEED:
				// 獲取網絡成功
				jsonString = (String) msg.obj;
				break;
			case ConstantValues.GET_NET_FAILED:
				// 獲取網絡失敗
				break;
			case ConstantValues.DEL_RESULT_SUCCEED:
				// 數據處理成功了,開始設置數據
				break;
			case ConstantValues.DEL_RESULT_FAILED:
				// 字符串處理失敗
				theUrlErrorShow();
				break;
			case ConstantValues.THE_URL_ERROR:
				// 字符串處理失敗
				Logger.ii(TAG, "The url error!");
				break;
			default:
				break;
			}
		}
	};

5、總結

在使用上面的網絡請求封裝類的時候,要注意兩個問題:

第一、我們使用的網絡請求中,需要傳遞當前的handler處理對象,用於接收我們的消息處理返回信息;內部的網絡請求,get和post請求,這裡不再贅述;

第二、我們使用的這個框架中,沒有使用到Cookie處理機制,那麼當我們做需要登錄的請求的時候,需要使用Cookie處理。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved