版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第7章網(wǎng)絡(luò)通信7.1使用WebView7.2使用HTTP訪問網(wǎng)絡(luò)7.3解析XML格式數(shù)據(jù)7.4解析JSON格式數(shù)據(jù)7.5使用WebService7.6綜合案例7.7實(shí)訓(xùn)本章小結(jié)
7.1使用WebView
任務(wù)目標(biāo)使用WebView控件,打開頁面。效果如圖7-1-1所示。圖7-1-1WebView運(yùn)行效果圖
實(shí)施步驟
步驟1:在activity_main.xml文件中添加一個(gè)WebView控件,控件id為web1。
步驟2:在默認(rèn)的MainActivity中編寫與WebView相關(guān)的代碼。
步驟3:配置uses-permission,在AndroidManifest.xml文件中添加如下代碼中加粗內(nèi)容,以便訪問網(wǎng)絡(luò)。
完成后的運(yùn)行效果圖如圖7-1-1所示。
相關(guān)知識(shí)
現(xiàn)在很多App都內(nèi)置了Web網(wǎng)頁,WebView比較靈活,不需要頻繁升級(jí)客戶端,變化頻繁的頁面可以通過采用WebView方法加載網(wǎng)頁來實(shí)現(xiàn)。WebView中的常見方法見表7-1-1。
WebViewClient主要用于幫助WebView處理各種通知、請(qǐng)求事件,有以下幾種常用方法:
(1)?onPageFinished頁面請(qǐng)求完成。
(2)?onPageStarted頁面開始加載。
(3)?shouldOverrideUrlLoading攔截url。
(4)?onReceivedError訪問錯(cuò)誤時(shí)回調(diào)。例如,訪問網(wǎng)頁時(shí)報(bào)錯(cuò),在這個(gè)方法回調(diào)的時(shí)候可以加載錯(cuò)誤頁面。
7.2使用HTTP訪問網(wǎng)絡(luò)
任務(wù)目標(biāo)使用HTTP獲取頁面數(shù)據(jù),效果如圖7-2-1所示。圖7-2-1HTTP獲取數(shù)據(jù)結(jié)果
實(shí)施步驟
步驟1:點(diǎn)擊菜單【File】,選擇【new】|【newmodule】,命名為Ex7_2_1。在activity_main.xml文件中添加一個(gè)Button按鈕,按鈕文本為http獲取數(shù)據(jù)和用于結(jié)果顯示的TextView,代碼參考如下清單中的9~18行。
步驟2:在文件MainActivity.java中修改AppCompatActivity。
運(yùn)行結(jié)果如圖7-2-1所示。
相關(guān)知識(shí)
HTTP(HyperTextTransferProtocol)的中文全稱是超文本傳輸協(xié)議,它是一種為分布式、合作式、多媒體信息系統(tǒng)服務(wù),面向應(yīng)用層的協(xié)議,目前是Internet上使用最廣泛的應(yīng)用層協(xié)議之一。它基于傳輸層的TCP協(xié)議進(jìn)行通信,HTTP協(xié)議是通用的、無狀態(tài)的協(xié)議。
HTTP的工作原理十分簡單,就是客戶端向服務(wù)器發(fā)送一條HTTP請(qǐng)求,服務(wù)器收到請(qǐng)求之后會(huì)返回一些數(shù)據(jù)給客戶端,然后客戶端對(duì)這些數(shù)據(jù)進(jìn)行解析和處理即可。
在Android上發(fā)送HTTP請(qǐng)求的主要方式是使用HttpURLConnection。其用法是:首先獲取HttpURLConnection的實(shí)例,一般只需要新建一個(gè)URL對(duì)象,并傳入目標(biāo)的網(wǎng)絡(luò)地址,然后調(diào)用openConnection()方法即可。
得到了HttpURLConnection的實(shí)例之后,就可以設(shè)置HTTP請(qǐng)求數(shù)據(jù)所使用的方法。常用的方法主要有兩個(gè):GET和POST。GET表示希望從服務(wù)器那里獲取的數(shù)據(jù),而post則表示將數(shù)據(jù)提交給服務(wù)器。
之后調(diào)用getInputStream()方法就可以獲取服務(wù)器返回的輸入流,剩下的任務(wù)就是對(duì)數(shù)據(jù)流進(jìn)行讀取了。
最后可以調(diào)用disconnect()方法將這個(gè)HTTP連接關(guān)閉。
7.3解析XML格式數(shù)據(jù)
任務(wù)目標(biāo)讀取XML文件并輸出。解析XML文件的運(yùn)行效果如圖7-3-1所示。圖7-3-1解析XML文件的運(yùn)行結(jié)果
實(shí)施步驟
步驟1:新建Module,命名為Ex7_3_1。如圖7-3-2所示,在Ex7_3_1上單擊鼠標(biāo)右鍵選擇【New】|【Folder】|【AssetsFloder】,在界面中點(diǎn)擊Finish按鈕,創(chuàng)建Assert文件夾。
圖7-3-2創(chuàng)建assert文件夾菜單
步驟2:在布局文件中添加一個(gè)TextView控件,用于存放結(jié)果。
步驟3:在MainActivity.java中修改代碼。
代碼運(yùn)行效果如圖7-3-1所示。
相關(guān)知識(shí)
XML(ExtensibleMarkupLanguage)的中文全稱為可擴(kuò)展標(biāo)記語言,它有如下特性:
(1)?XML是一種很像HTML的標(biāo)記語言。
(2)?XML的設(shè)計(jì)宗旨是傳輸數(shù)據(jù),而不是顯示數(shù)據(jù)。
(3)?XML標(biāo)簽沒有被預(yù)定義,需要自行定義標(biāo)簽。
(4)?XML被設(shè)計(jì)為具有自我描述性。
(5)?XML是W3C的推薦標(biāo)準(zhǔn)。
Android中解析XML格式數(shù)據(jù)大致有以下三種方法:
(1)使用SAX解析XML。
(2)使用DOM解析XML。
(3)使用PULL解析XML。PULL內(nèi)置于Android系統(tǒng)中,也是官方解析布局文件所使用的方式。
7.4解析JSON格式數(shù)據(jù)
任務(wù)目標(biāo)通過解析JSON數(shù)據(jù)顯示不同地區(qū)的天氣情況。運(yùn)行效果如圖7-4-1和圖7-4-2所示。圖7-4-1JSON數(shù)據(jù)讀取結(jié)果一圖7-4-2JSON數(shù)據(jù)讀取結(jié)果二
實(shí)施步驟
步驟1:新建Module,命名為Ex7_4_1,在Ex7_4_1名字上單擊鼠標(biāo)右鍵,在彈出菜單中選擇【New】|【Folder】|【RawResourcesFolder】。
步驟2:將所需圖片素材(如背景和天氣標(biāo)志等)放入drawable中,編寫完成activity_main.xml。
步驟3:添加WeatherInfo.java。
步驟4:下載導(dǎo)入gson.Jar包(詳見后面“使用gson解析JSQN數(shù)據(jù)”內(nèi)容),編寫WeatherService.java解析類。
步驟5:完成MainActivity.java代碼編寫。
程序運(yùn)行后的效果如圖7-4-1和圖7-4-2所示。
相關(guān)知識(shí)
JSON(JavaScriptObjectNotation)是一種輕量級(jí)的數(shù)據(jù)交換格式。因?yàn)榻馕鯴ML比較復(fù)雜,而且需要編寫大段代碼,所以客戶端和服務(wù)器的數(shù)據(jù)交換格式往往通過JSON來進(jìn)行交換。尤其對(duì)于Web開發(fā)來說,JSON數(shù)據(jù)格式在客戶端直接可以通過JavaScript等前端代碼來進(jìn)行解析。
1.?JSON鍵值對(duì)
JSON一共有兩種數(shù)據(jù)結(jié)構(gòu)。一種是以鍵值對(duì)(key/value)形式存在的無序的jsonObject對(duì)象。一個(gè)對(duì)象以“{”(左花括號(hào))開始,以“}”(右花括號(hào))結(jié)束,每個(gè)名稱后跟一個(gè)“:”(冒號(hào)),鍵值對(duì)之間使用“,”(逗號(hào))分隔,如圖7-4-3所示。圖7-4-3key/value形式JSON數(shù)據(jù)結(jié)構(gòu)示意
另一種數(shù)據(jù)格式就是有序的value的集合,這種形式被稱為jsonArray。數(shù)組是值(value)的有序集合。一個(gè)數(shù)組以“[”(左中括號(hào))開始,以“]”(右中括號(hào))結(jié)束,值之間使用“,”(逗號(hào))分隔,如圖7-4-4所示。圖7-4-4有序value集合形式JSON數(shù)據(jù)結(jié)構(gòu)示意
2.?JSON數(shù)據(jù)的解析
常見的JSON解析庫有org.json、gson、json-lib、json-simple等。
1)使用org.json解析JSON
AndroidSDK中提供了org.json,用來解析JSON數(shù)據(jù)。
2)使用gson解析JSON數(shù)據(jù)
gson是Google提供的解析JSON的一個(gè)開源類庫。使用前需要先將gson.Jar添加到項(xiàng)目中(gson庫的使用方法可參考/artifact/com.google.code.gson/gson)才能使用其提供的方法。將項(xiàng)目切換到project模式,把下載的jar包放入app→libs中,使用組合鍵Ctrl+Alt+Shift+s,出現(xiàn)ProjectStructure界面,然后在Dependencies中添加依賴,如圖7-4-5所示。圖7-4-5添加gson.Jar
7.5使用WebService
任務(wù)目標(biāo)使用WebService制作手機(jī)號(hào)碼歸屬地查詢頁面。效果如圖7-5-1所示。圖7-5-1手機(jī)號(hào)碼歸屬地查詢結(jié)果
實(shí)施步驟
步驟1:新建Module,命名為Ex7_5_1。修改布局文件activity_main.xml文件,包括標(biāo)題TextView(手機(jī)號(hào)碼段)、EditText(用于輸入手機(jī)號(hào)碼)、Button(作為查詢按鈕)、另一個(gè)TextView(用于顯示結(jié)果)。
步驟2:在MainActivity.java程序中添加代碼。
程序運(yùn)行結(jié)果如圖7-5-1所示。
相關(guān)知識(shí)
WebService(Web服務(wù))是一個(gè)用于支持網(wǎng)絡(luò)間不同機(jī)器互相操作的軟件系統(tǒng),是一種自包含、自描述和模塊化的應(yīng)用程序,可以在網(wǎng)絡(luò)中被描述、發(fā)布和調(diào)用,可以將它看作是基于網(wǎng)絡(luò)的、分布式的模塊化組件。WebService建立在通用協(xié)議(如HTTP、SOAP、UDDI、WSDL等)的基礎(chǔ)之上。WebService的優(yōu)勢(shì)在于提供了不同應(yīng)用程序平臺(tái)之間的相互操作,它使得基于組件的開發(fā)和Web相結(jié)合的效果達(dá)到最佳。
SOAP(SimpleObjectAccessProtocol,簡單對(duì)象訪問協(xié)議)是一種輕量級(jí)的、簡單的、基于XML的協(xié)議,是一個(gè)用于在分布式環(huán)境中交換格式化和固化信息的簡單協(xié)議。也就是說,要進(jìn)行通信,進(jìn)行數(shù)據(jù)的訪問傳輸,就必須依賴一定的協(xié)議,而SOAP正是WebService通信中所依賴的一種協(xié)議。
WSDL(WebServiceDescriptionLanguage,Web服務(wù)描述語言)是一種用來描述Web服務(wù)的XML語言,它描述了Web服務(wù)的功能、接口、參數(shù)、返回值等,便于程序開發(fā)員綁定和調(diào)用服務(wù)。它以一種和具體語言無關(guān)的方式定義了給定Web服務(wù)調(diào)用和應(yīng)答的相關(guān)操作和消息。
通常所說的WebService都是遠(yuǎn)程的某個(gè)服務(wù)器對(duì)外開放了某種服務(wù),或者理解為對(duì)外公開了某個(gè)功能或者方法,通過編程來傳入一些參數(shù),即可返回所需要的信息。例如,對(duì)外公開了手機(jī)號(hào)碼歸屬地查詢服務(wù),用戶只需要在調(diào)用該服務(wù)時(shí)傳入一個(gè)手機(jī)號(hào)段(號(hào)碼),就能立即獲取該號(hào)段的歸屬地信息。
7.6綜合案例
任務(wù)目標(biāo)制作一個(gè)簡易天氣預(yù)報(bào)App。效果如圖7-6-1所示。圖7-6-1天氣情況查詢結(jié)果
實(shí)施步驟
步驟1:新建Module,命名為Ex7_6_1,在主界面activity_main.xml中添加一個(gè)EditText(用于輸入地名)、一個(gè)Button按鈕(用于查詢)和兩個(gè)TextView(分別用于顯示獲取到的原始數(shù)據(jù)和解析后的數(shù)據(jù))。
步驟2:新建htmlService.java文件,用于讀取網(wǎng)絡(luò)數(shù)據(jù)。
步驟3:新建數(shù)據(jù)操作JavaBean文件WeatherInfo.java。
步驟4:主程序用于查詢數(shù)據(jù)庫得到城市編碼,并根據(jù)編碼查詢相應(yīng)的天氣數(shù)據(jù)。修改MainActivity.java代碼。
示例運(yùn)行結(jié)果如圖7-6-1所示。
案例分析
程序中使用的數(shù)據(jù)庫cityId的表city數(shù)據(jù)如圖7-6-2所示。圖7-6-2地區(qū)編碼表city
7.7實(shí)訓(xùn)
實(shí)訓(xùn)目的編寫一個(gè)網(wǎng)絡(luò)圖片瀏覽器。通過該實(shí)例了解網(wǎng)絡(luò)資源訪問方法。
實(shí)訓(xùn)步驟
(1)制作程序主界面布局activity_main.xml文件,包括輸入圖片網(wǎng)址的EditText組件、訪問按鈕Button和圖片顯示組件ImageView。
(2)在清單文件AndroidMan
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《高層分析》課件
- 杭電電子設(shè)計(jì)課件驅(qū)動(dòng)電路設(shè)計(jì)
- 道路運(yùn)輸設(shè)備承攬合同三篇
- 主題教育活動(dòng)的創(chuàng)新設(shè)計(jì)計(jì)劃
- WS-1紙張濕強(qiáng)劑相關(guān)行業(yè)投資規(guī)劃報(bào)告范本
- PMMA再生料相關(guān)行業(yè)投資方案
- 幼兒園心理健康宣傳計(jì)劃
- 創(chuàng)造性思維下的新年目標(biāo)計(jì)劃
- 學(xué)校秋季環(huán)境美化活動(dòng)計(jì)劃
- 如何處理復(fù)雜的財(cái)務(wù)事務(wù)計(jì)劃
- 選必中第一單元大單元教學(xué)設(shè)計(jì)
- 建筑設(shè)計(jì)防火規(guī)范
- 4D廚房設(shè)備設(shè)施管理責(zé)任卡
- GB/T 5593-2015電子元器件結(jié)構(gòu)陶瓷材料
- GB/T 3871.6-1993農(nóng)業(yè)輪式和履帶拖拉機(jī)試驗(yàn)方法第6部分制動(dòng)試驗(yàn)
- GB/T 23988-2009涂料耐磨性測定落砂法
- GB/T 22844-2009配套床上用品
- GB/T 1962.2-2001注射器、注射針及其他醫(yī)療器械6%(魯爾)圓錐接頭第2部分:鎖定接頭
- GB/T 17646-2013小型風(fēng)力發(fā)電機(jī)組設(shè)計(jì)要求
- 中醫(yī)拔罐技術(shù)試題及答案
- 2023年蘇教版小學(xué)數(shù)學(xué)全套教材內(nèi)容安排表
評(píng)論
0/150
提交評(píng)論