Http通信與Socket通信-筆記_第1頁
Http通信與Socket通信-筆記_第2頁
Http通信與Socket通信-筆記_第3頁
Http通信與Socket通信-筆記_第4頁
Http通信與Socket通信-筆記_第5頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

網(wǎng)絡(luò)編程:通信與Socket通信學(xué)問點概述:1.URLConnection接口:GetPost方式2.Client接口:GetPost方式3.Socket通信:面對連接(TCP)和無連接的(UDP)學(xué)問點詳述:前序:通信〔超文本傳輸協(xié)議〕用于傳送www方式的數(shù)據(jù),承受了懇求/了懇求的方法、URI、協(xié)議版本,以及包含懇求修飾符、客戶信息和內(nèi)容的類似于MIME的消息構(gòu)造。效勞器以一個狀態(tài)行作為響應(yīng),響應(yīng)的內(nèi)容包括消息協(xié)議的版本、成功或者錯誤編碼,還包含效勞器信息、實體元信息以及可能的實體內(nèi)容。它是一個屬于應(yīng)用層的面對對象的協(xié)議,由于其簡潔internet上,通信通常發(fā)生在TCP/IP連接之上,缺省端口是TCP80協(xié)議在internet或其它網(wǎng)絡(luò)的其他協(xié)議之上才能完成,只預(yù)示著一個牢靠地傳輸。Android供給了URLConnection和Client接口程序。URLConnection接口.*供給GetPost,Get懇求可以獵取靜態(tài)頁面,也可以把參數(shù)放在URL字符串后面,傳遞給效勞器Post與Get的不同之處在于Post的參數(shù)不是放在URL 字符串里面,而是放在 請求數(shù)據(jù)中。URLConnection是Java的標準類,繼承自URLConnection類,兩個類都是抽象類,無法直接實例化對象。其對象主要通過URL的openConnection方法獲得每次openConnection都將創(chuàng)立一個的實例,在連接之前我們可以對其一些屬性進展設(shè)置,比方超時時間等:connection.setDoOutput(true);//設(shè)置輸入流〔Post時必需設(shè)置〕connection.setDoInput(true)//〔Post時必需設(shè)置〕connection.setRequestMethod(“POST“);//設(shè)置方式為POST〔Post時必需設(shè)置〕connection.setInstanceFollowRedirects(true);//設(shè)置該懇求是否重定向connection.disconnect;//關(guān)閉URLConnection連接注:假設(shè)使用post方式,還需要設(shè)置懇求的Content-Typeconnection.setRequestProperty(“Content-Type“,“application/x-www-form-urlencoded“);Client接口(Apache接口,包名:org.apache..*),需要了解一些類:(1)ClientGetGet來構(gòu)Get懇求,然后通過Client來執(zhí)行這個懇求,Response在接收這個懇求后給出響應(yīng),最終通是否成功,并處理??梢灾苯邮褂萌缦路椒▽㈨憫?yīng)的實體元信息轉(zhuǎn)化為字符串ClientGet方式懇求步驟:Get懇求newGet〔urlStr〕獵取t實例w〔;發(fā)送懇求,接收響應(yīng)Response=Client.excute(Get)推斷響應(yīng)碼是不是200.假設(shè)是200,接收響應(yīng)數(shù)據(jù)Entity =Response.getEntity;Client使用Post方式獵取數(shù)據(jù)略微簡單一點。首先好使PostPost懇求,PostRequest=newPost(“url“);需要使用NameValuePair來保存要傳遞的參數(shù),可以使用BasicNameValuePair來構(gòu)造一個要被傳遞的參數(shù),然后通過addNameValuePair中,List<NameValuePair>params=newArrayList<NameValuePair>;//NameValuePairPost參數(shù)params.add(newBasicNameValuePair(“par“,“Client_android_Post“));//Post方式還需要設(shè)置所使用的字符集,最終就和Get方式一樣通過Client來懇求這個連接,返回響應(yīng)并處理,Entityentity=newUrlEncodedFormEntity(params,“utf-8“); Request.setEntity(entity); //為懇求設(shè)置實體元信息〔2〕DefaultClient客戶端,我們可連接。(3)Response連接后,就會返回一個Response,可以通過其獲得一些響連接并獲得該懇求是否成功的代碼:if(hresponse.getStatusLine.getStatusCode==Status.SC_OK)//連接成功}3Socket通信SocketIP地址和端口,它是支持TCP/IP〔TCP協(xié)議〔UDP協(xié)議的。面對連接的操作比無連接操作的效率更低,但是數(shù)據(jù)的安全性更高。AndroidSocket編程效勞器實現(xiàn)步驟:指定端口實例化一個ServerSocket調(diào)用ServerSocket的accept〔〕以在等待連接期間造成堵塞獵取位于該底層Socket的流以進展讀寫操作將數(shù)據(jù)封裝成流Socket進展讀寫關(guān)閉翻開的流客戶端實現(xiàn)步驟:通過IP地址和端口實例化Socket,懇求連接效勞器Socket上的流以進展讀寫把流包裝進BufferedReader/PrintWriter的實例Socket進展讀寫關(guān)閉翻開的流擴展網(wǎng)絡(luò)通信的中文亂碼問題網(wǎng)絡(luò)通信中,產(chǎn)生亂碼的緣由主要是通信過程中使用了不同傳輸?shù)竭_中斷設(shè)備的編碼方式。因此在傳輸過程中就需要至少兩次編碼轉(zhuǎn)換:首先從效勞器編碼轉(zhuǎn)換為網(wǎng)絡(luò)編碼,再從網(wǎng)絡(luò)編碼轉(zhuǎn)換為終端設(shè)備編碼。在轉(zhuǎn)換過程中發(fā)生任何狀況都可能引起編碼混亂,一般狀況下我們可以通過以下兩種方式來避開這個問題。Unicode字符集,所以在連接網(wǎng)頁時,我們期望網(wǎng)頁數(shù)據(jù)在網(wǎng)絡(luò)傳輸時utf-8utf-8轉(zhuǎn)換成Unicod

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論