Android筆記之 網路http通訊

來源:互聯網
上載者:User

0、在認識HTTP前先認識URL

在我們認識HTTP之前,有必要先弄清楚URL的組成,例如:

http://www.******.com/china/index.htm

它的含義如下:

1. http://:代表超文本轉移協議,通知****.com伺服器顯示Web頁,通常不用輸入;

2. www:代表一個Web(全球資訊網)伺服器;

3.****.com/:這是裝有網頁的伺服器的網域名稱,或站台伺服器的名稱;

4.China/:為該伺服器上的子目錄,就好像我們的檔案夾;

5.Index.htm:index.htm是檔案夾中的一個HTML檔案(網頁)。

1、什麼是HTTP

HTTP協議是一種應用程式層協議,HTTP是HyperTextTransfer Protocol(超文字傳輸通訊協定 (HTTP))的英文縮寫。HTTP可以通過傳輸層的TCP協議在用戶端和伺服器之間傳輸資料。HTTP協議主要用於Web瀏覽器和Web伺服器之間的資料交換。我們在使用IE或Firefox瀏覽網頁或下載Web資源時,通過在地址欄中輸入,開頭的4個字母http就相當於通知瀏覽器使用HTTP協議來和host所確定的伺服器進行通訊。

HTTP/1.0

這是第一個在通訊中指定版本號碼的 HTTP協議版本,至今仍被廣泛採用,特別是在Proxy 伺服器中。

HTTP/1.1

目前的版本。持久串連被預設採用,並能很好地配合Proxy 伺服器工作。還支援以管道方式在同時發送多個請求,以便降低線路負載,提高傳輸速度。

2HTTP工作方式

HTTP協議採用了請求/響應的工作方式。基於HTTP1.0協議的用戶端在每次向伺服器發出請求後,伺服器就會向用戶端返迴響應訊息(包括請求是否正確以及所請求的資料),在確認用戶端已經收到響應訊息後,服務端就會關閉網路連接(其實是關閉TCP串連)。在這個資料轉送過程中,並不儲存任何曆史資訊和狀態資訊,因此,HTTP協議也被認為是無狀態的協議,圖1描繪了HTTP1.0協議的通訊過程。



<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PHN0cm9uZz4zPC9zdHJvbmc+PHN0cm9uZz6hojwvc3Ryb25nPjxzdHJvbmc+SFRUUDwvc3Ryb25nPjxzdHJvbmc+z+zTpsLrPC9zdHJvbmc+PC9wPgo8cD4KMXh4OtDFz6LP7NOmwOCjrLHtyr6908rVtb3H68fzsqLH0rzM0Pi0psDtPC9wPgo8cD4KMnh4OrSmwO2zybmmz+zTpsDgo6yx7cq+tq/X97G7s8m5pr3TytWhosDtveK6zb3Tytw8L3A+CjxwPgozeHg61ti2qM/yz+zTpsDgo6zOqsHLzeqzyda4tqi1xLav1/ejrLHY0Ou908rcvfjSu7K9tKbA7TwvcD4KPHA+CjR4eDq/zbuntsu07c7zo6y/zbunx+vH87D8uqzT77eotO3O87vy1d/Kx7K7xNzV/ci31rTQ0DwvcD4KPHA+CjV4eDq3/s7xtsu07c7zo6y3/s7xxveyu8Tc1f3It9a00NDSu7j21f3It7XEx+vH8zwvcD4KPHA+IDwvcD4KPHA+PHN0cm9uZz40PC9zdHJvbmc+PHN0cm9uZz6hojwvc3Ryb25nPjxzdHJvbmc+SFRUUDwvc3Ryb25nPjxzdHJvbmc+tcTH68fzzOXT67vYuLTM5Twvc3Ryb25nPjwvcD4KPGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20140628/2014062808512620.jpg" alt="\">



5、兩種HTTP通訊

(1)HttpURLConnection

(2)HttpClientURLConnection


下面舉例說明第一種HttpURLConnection

private class DownThread extends Thread{// 當前線程的下載位置private int startPos;// 定義當前線程負責下載的檔案大小private int currentPartSize;// 當前線程需要下載的檔案塊private RandomAccessFile currentPart;// 定義已經該線程已下載的位元組數public int length;public DownThread(int startPos, int currentPartSize,RandomAccessFile currentPart){this.startPos = startPos;this.currentPartSize = currentPartSize;this.currentPart = currentPart;}@Overridepublic void run(){try{URL url = new URL(path);HttpURLConnection conn = (HttpURLConnection)url.openConnection();conn.setConnectTimeout(5 * 1000);conn.setRequestMethod("GET");conn.setRequestProperty("Accept","image/gif, image/jpeg, image/pjpeg, image/pjpeg, "+ "application/x-shockwave-flash, application/xaml+xml, "+ "application/vnd.ms-xpsdocument, application/x-ms-xbap, "+ "application/x-ms-application, application/vnd.ms-excel, "+ "application/vnd.ms-powerpoint, application/msword, */*");conn.setRequestProperty("Accept-Language", "zh-CN");conn.setRequestProperty("Charset", "UTF-8");InputStream inStream = conn.getInputStream();// 跳過startPos個位元組,表明該線程只下載自己負責哪部分檔案。inStream.skip(this.startPos);byte[] buffer = new byte[1024];int hasRead = 0;// 讀取網路資料,並寫入本地檔案while (length < currentPartSize&& (hasRead = inStream.read(buffer)) > 0){currentPart.write(buffer, 0, hasRead);// 累計該線程下載的總大小length += hasRead;}currentPart.close();inStream.close();}catch (Exception e){e.printStackTrace();}}}








聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.