日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android操作HTTP实现与服务器通信

發布時間:2024/1/23 Android 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android操作HTTP实现与服务器通信 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

出處:http://www.cnblogs.com/hanyonglu/archive/2012/02/19/2357842.html

本示例以Servlet為例,演示Android與Servlet的通信

眾所周知,Android與服務器通信通常采用HTTP通信方式和Socket通信方式,而HTTP通信方式又分get和post兩種方式。至于Socket通信會在以后的博文中介紹。

HTTP協議簡介:?

HTTP (Hypertext Transfer Protocol ),是Web聯網的基礎,也是手機聯網常用的協議之一,HTTP協議是建立在TCP協議之上的一種協議。?

?

HTTP連接最顯著的特點是客戶端發送的每次請求都需要服務器回送響應,在請求結束后,會主動釋放連接。從建立連接到關閉連接的過程稱為“一次連接”。? 在HTTP 1.0中,客戶端的每次請求都要求建立一次單獨的連接,在處理完本次請求后,就自動釋放連接。? 在HTTP 1.1中則可以在一次連接中處理多個請求,并且多個請求可以重疊進行,不需要等待一個請求結束后再發送下一個請求。

?

由于HTTP在每次請求結束后都會主動釋放連接,因此HTTP連接是一種“短連接”、“無狀態”,要保持客戶端程序的在線狀態,需要不斷地向服務器發起連接請求。通常的做法是即使不需要獲得任何數據,客戶端也保持每隔一段固定的時間向服務器發送一次“保持連接”的請求,服務器在收到該請求后對客戶端進行回復,表明知道客戶端“在線”。若服務器長時間無法收到客戶端的請求,則認為客戶端“下線”,若客戶端長時間無法收到服務器的回復,則認為網絡已經斷開。?

基于HTTP1.0協議的客戶端在每次向服務器發出請求后,服務器就會向客戶端返回響應消息,在確認客戶端已經收到響應消息后,服務端就會關閉網絡連接。在這個數據傳輸過程中,并不保存任何歷史信息和狀態信息,因此,HTTP協議也被認為是無狀態的協議。

? HTTP1.1和HTTP1.0相比較而言,最大的區別就是增加了持久連接支持。當客戶端使用HTTP1.1協議連接到服務器后,服務器就將關閉客戶端連接的主動權交還給客戶端;也就是說,只要不調用Socket類的close方法關閉網絡連接,就可以繼續向服務器發送HTTP請求。

?

HTTP連接使用的是“請求—響應”的方式(2次握手),不僅在請求時需要先建立連接,而且需要客戶端向服務器發出請求后,服務器端才能回復數據。而Socket連接在雙方建立起連接后就可以直接進行數據的傳輸

?

? HTTP協議的特點:

? 支持B/S及C/S模式;

簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。

靈活:HTTP 允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type 加以標記;

無狀態:HTTP 協議是無狀態協議。無狀態是指協議對于事務處理沒有記憶能力。缺少狀態意味著如果后續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。

?

HTTP協議請求方法:?

請求行中包括了請求方法,解釋如下:

GET 請求獲取Request-URI 所標識的資源;

POST 在Request-URI 所標識的資源后附加新的數據;

HEAD 請求獲取由Request-URI 所標識的資源的響應消息報頭

PUT 請求服務器存儲一個資源,并用Request-URI 作為其標識

DELETE 請求服務器刪除Request-URI 所標識的資源;

TRACE 請求服務器回送收到的請求信息,主要用于測試或診斷

CONNECT 保留將來使用

OPTIONS 請求查詢服務器的性能,或者查詢與資源相關的選項和需求

Get與Post請求區別:?

Post請求可以向服務器傳送數據,而且數據放在HTML HEADER內一起傳送到服務端URL地址,數據對用戶不可見。而get是把參數數據隊列加到提交的URL中,值和表單內各個字段一一對應,? 例如(http://www.baidu.com/s?w=%C4&inputT=2710)

get 傳送的數據量較小,不能大于2KB。post傳送的數據量較大,一般被默認為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。

get安全性非常低,post安全性較高。

項目結構圖:?

?

?

??get方式:

?? ? ? ? ?get機制用的是在URL地址里面通過?號間隔,然后以name=value的形式給客戶端傳遞參數。所以首先要在Android工程下的AndroidGetTest.java中onCreate方法定義好其URL地址以及要傳遞的參數,然后通過URL打開一個HttpURLConnection鏈接,此鏈接可以獲得InputStream字節流對象,也是往服務端輸出和從服務端返回數據的重要過程,而若服務端response.getInputStream.write()往andorid返回信息時候,就可以通過InputStreamReader作轉換,將返回來的數據用BufferReader顯示出來。

具體代碼如下:

?? ? ? ? ?Servlet端接收數據并返回通知:?

?

?

? ??Android端發送消息并接收Servlet返回的消息:

?

?post方式:

?? ? ? ? post傳輸方式不在URL里傳遞,也正好解決了get傳輸量小、容易篡改及不安全等一系列不足。主要是通

過對HttpURLConnection的設置,讓其支持post傳輸方式,然后在通過相關屬性傳遞參數(若需要傳遞中文字符,則可以通過URLEncoder編碼,而在獲取端采用URLDecoder解碼即可)?

?

?



最后,希望轉載的朋友能夠尊重作者的勞動成果,加上轉載地址:http://www.cnblogs.com/hanyonglu/archive/2012/02/19/2357842.html??謝謝。

完畢。^_^

?

總結

以上是生活随笔為你收集整理的Android操作HTTP实现与服务器通信的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。