1. 程式人生 > 其它 >Android http(第二十五節課)

Android http(第二十五節課)

技術標籤:android

第二十五節課

http
.HTTP ( Hyper Text Transfer Protocol)
協議即超文字傳輸協議,它規定了瀏覽器和全球資訊網伺服器之間互相通訊的規則。
從圖中可以看出,使用手機客戶端訪問百度時,會發送一個HTTP請求。當伺服器端接收到這個請求後,會做出響應並將百度頁面返回給客戶端
瀏覽器。這個請求和響應的過程實際上就是HTTP通訊的過程。
在這裡插入圖片描述
·一次HTTP請求的過程
·建立連線-→傳送請求-→處理請求-→返回資料-→傳送請求2-……關閉連線
.HTTP請求的常用方式
GET
. POST
.HTTP請求的格式

請求行
請求頭
·請求體
HTTP響應的格式
響應行(包含響應碼:200404500302)。
響應頭
·響應體
GET方式和POST方式提交資料

  1. HITP/1.1協議中共定義了八種方法來表明Request-URI指定的資源的不同操作方式。其中最常用的兩種請求方式是GET和POST。
  2. GET方式與POST方式的區別
  3. GET方式以實體的方式得到由請求URL所指向的資源資訊,向伺服器提交
    的引數跟在請求URL後面。使用GET方式訪問網路UAL的長度是有限制的。請求URL的長度耍小於1K。
  4. POST方式用來向目的伺服器發出請求.要求它接收被附在請求後的實體。它向伺服器我交的引數在請求後的實體中,POST方式對URL的長度是沒有限制的
    使用HttpConnection
  5. URL:包含請求地址的類
    -tRil(path):包含請求路徑的構造方法- openConnectionO:很到連線物件
    2.HttpURLConnection:代表與伺服器連線的類
  • setRequestMethod(“GET/POST" ):設定請求方式
    setDoInput (true/ false):設定可以讀取伺服器瑞返回的資料
    setDo0utput(true/false):設定可以向伺服器芒寫入資料
    setConnectTimeout(time):設定連線超時時間,單位為ms
    setReadTimeout (time):設定讀取伺服器返回資料的時間-connecto :連線伺服器
  • int getResponseCodeO:得到伺服器返回的結果碼
    Int getContentLengthO:得到伺服器返回資料的長度(位元組)getOutputStreamO:返回一個指向伺服器端的資料輸出流
    getInputStreamo:返畫一個從伺服器端返回的致據輸入流
    disconnectO :斷開連線

1.HttpURLConnection

<?xm1 version="1.0"" encoding="utf-8""?>
<network-security-config>
<domain-config>
<domain includesubdomains="true"">https : / /www.baidu.com/</domain>epin-set expiration="2020-08-01"">
pin digest="SHA-256"">7HIpactkIAq2Y49orFOoQKurwxmmSFzhBcoQvcRh33Y=</pin><!-- backup pin -->
pin digest=""SHA-256">fwzaOLRMKouZHRC8E1+4Pyu1dPDcf3uKgo/04cDM1oE=</pin></pin-set>
</domain-config>
</network-security-config>

Handler訊息機制
·在使用手機下載軟體時,通常都能在介面上看到一個下載的進度條,這個進度條用來表示當前下載的進度。但是Android4.0以後不能在UI執行緒訪問網路,而子執行緒也不能更新UI介面。為了根據下載進度實時更新UI介面,就需要用到Handler訊息機制來實現執行緒間的通訊。

  • Handler機制主要包括四個關鍵物件,分別是:Message、Handler、
    MessageQueue、Looper。
  • Handler
  • Handler主要用於傳送訊息和處理訊息。一般使用Handelr物件的
    sendMessage()方法傳送訊息,訊息經過一系列處理後,最終會傳遞到Handler的handlerMessage()方法中。
    ·傳送即時訊息: sendMessage(Message msg)
    ·傳送延時訊息: sendMessageDelayed(Message msg, long time)·處理訊息: handleMessage(Message msg)(回撥方法)
    ·移除還未處理的訊息: removeMessages[int what)
    MessageQueue
  • MessageQueue是訊息佇列的意思,它主要用來存放通過Handler傳送的訊息。通過Handler傳送的訊息會存在MessageQueue中等待處理。它是一個按Message的when排序的優先順序佇列。(when:代表著被處理的時間)
    Looper
  • Looper是每個執行緒中的MessageQueue的管家。呼叫Looper的loop()方法後,就會進入到一個無線迴圈中。然後一發現MessageQueue中存在一條訊息,就會將它取出,並傳遞到Handler的HandlerMessage()方法中。
    ·使用Handler的一般步驟
    1.建立Handler成員變數物件,並重寫其handleMessage()2.在分/主執行緒建立Message物件
    3.使用handler物件傳送Message學
    4.在handleMessage()中處理訊息
    Handler訊息處理首先需要線上程建立一handler物件,然後在子執行緒中呼叫Hanlder的sendMessage()方法,接著這個訊息會存放在UI執行緒的MessageQueue中,通過Looper物件取出MessageQueue中的訊息,最後分發回Hanlder的handleMessage()方法中。