算是一個必學的技巧,
底下將詳細介紹這兩種方法的使用。
何謂GET ? 和 POST又有甚麼差?
總括一句就是,
GET會將資訊直接加於網址之後,
POST則無法讓使用直接看見傳送的資訊,改用封包的方式傳送。
GET說明
一般而言,GET的網址會如下:https://www.youtube.com/watch?v=XQx3-FMAV0A&index=4&list=PLwqEt916AH7_FgFrURYpyWoLtv2_pGT8o
上面是一個youtube的清單
讓我們依序拆解
https://www.youtube.com/watch \\ 此為網址
? \\ 告知伺服器開始使用GET方法
v=8l493crvzjM \\ 傳送變數1 頻道的編號
& \\ 告知後面還有要傳送的變數
index=1 \\ 傳送變數2 第幾首歌
& \\ 告知後面還有要傳送的變數
list=PLEkkDIfx4SOCZkFNEMvrpd41r4Z3TNq7H \\ 播放清單的編號
可以很明顯的看到
傳送GET的開頭是 " ? ",而每個變數的傳送間都會再加個 " & "
就是這樣簡單的架構。
POST說明
POST 則是使用較為隱密的封包傳送。用以處理機密性較高的資訊,例如帳號、密碼等資訊。
例如前往MSN 或是 FaceBook等網頁,登入時。
你無法在網址上看見你輸入的帳號密碼,這就是使用了POST的傳送。
因為網址上沒有差異,因此不多做解釋,詳細使用方法稍後會做說明。
====================
在使用GET 及 POST 的注意事項有三點!- 必須確定自己是要使用 GET 或 POST。
- Androidmanifest.xml必須要取得網路存取權限。
- 必須包含org.apache.http等網路套件。
GET 方法實際流程
1. 獲取網路權限:在Androidmanifest.xml加入以下Code,於</application>之後。
<uses-permission android:name="android.permission.INTERNET"/>2. 建立HTTP連線物件
// 宣告HTTP連線用實體,用以建立連線使用3. 建立HTTP GET物件,用來告訴要使用GET方法(網址僅供範例,此網址無效)
HttpClient client = new DefaultHttpClient();
// 宣告使用GET方式來傳送HTTP請求的物件。4. 建立用來儲存HTTP Response的物件,用來接收回傳的資料
HttpGet httpGet = new HttpGet("http://xxx.xxx/?v=aaa&b=bbb");
// 宣告用來儲存回傳的Response的物件5. 開始傳送請求,並獲得回應
HttpResponse response = null;
// 發送Http請求,以Get的方法取得回應。6. 檢查回應是否為空
response = client.execute(httpGet);
// 若為空,則跳離7. 建立Http資料實體,用來將Response資料取出
if(response == null) return ;
// 建立Http資料實體,轉換response資料8. 最後就可以利用獲得的Http實體,來轉換成自己所需要的資料
HttpEntity httpEntity = response.getEntity();
// 將獲得的資料轉換成字串顯示
String messageString = httpEntity.toString();
POST 方法實際流程
1. 獲取網路權限:在Androidmanifest.xml加入以下Code,於</application>之後。<uses-permission android:name="android.permission.INTERNET"/>2. 建立HTTP連線物件
// 宣告HTTP連線用實體,用以建立連線使用3. 建立HTTP POST物件,用來告訴要使用POST方法(網址僅供範例,此網址無效)
HttpClient client = new DefaultHttpClient();
// 宣告使用Post方式來傳送HTTP請求的物件。4. 添加要傳送的參數
HttpPost httpPost = new HttpGet("http://xxx.xxx/");
// 建立用來儲存參數的變數List<NameValuePair> postParams = new ArrayList<NameValuePair>();// 新增一個參數ID為Kay,值為ValuepostParams.add(new BasicNameValuePair(Key, Value));// 將參數指定編碼模式後,存成實體UrlEncodedFormEntity ent = new UrlEncodedFormEntity(postParams, HTTP.UTF_8);// 設定參數實體post.setEntity(ent);
5. 建立用來儲存HTTP Response的物件,用來接收回傳的資料
// 宣告用來儲存回傳的Response的物件6. 開始傳送請求,並獲得回應
HttpResponse response = null;
// 發送Http請求,以Post的方法取得回應。7. 接下來的步驟會與GET方法相同
response = client.execute(httpPost);
沒有留言:
張貼留言