項目八數(shù)據(jù)傳輸?shù)膶崿F(xiàn)-任務(wù)3驗證用戶登入信息_第1頁
項目八數(shù)據(jù)傳輸?shù)膶崿F(xiàn)-任務(wù)3驗證用戶登入信息_第2頁
項目八數(shù)據(jù)傳輸?shù)膶崿F(xiàn)-任務(wù)3驗證用戶登入信息_第3頁
項目八數(shù)據(jù)傳輸?shù)膶崿F(xiàn)-任務(wù)3驗證用戶登入信息_第4頁
項目八數(shù)據(jù)傳輸?shù)膶崿F(xiàn)-任務(wù)3驗證用戶登入信息_第5頁
免費預(yù)覽已結(jié)束,剩余21頁可下載查看

下載本文檔

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

文檔簡介

1、Android物聯(lián)網(wǎng)應(yīng)用程序開發(fā)資源轉(zhuǎn)化系統(tǒng)教材遼寧輕工職業(yè)學(xué)院遼寧輕工職業(yè)學(xué)院任務(wù)實現(xiàn)知識準(zhǔn)備任務(wù)目標(biāo)目 錄 遼寧輕工職業(yè)學(xué)院任務(wù)3 驗證用戶登錄信息項目8 數(shù)據(jù)傳輸?shù)膶崿F(xiàn)遼寧輕工職業(yè)學(xué)院【任務(wù)目標(biāo)】 1. 掌握Android中XML解析方法 2. 掌握Android中JSON解析方法 創(chuàng)建一個Android工程,實現(xiàn)登錄界面并將EditText控件中讀取 到的用戶名密碼進(jìn)行封裝并發(fā)送到服務(wù)器端進(jìn)行驗證。Android端如下圖所示: 1. XML解析的使用遼寧輕工職業(yè)學(xué)院【知識準(zhǔn)備】 XML(eXtensible Markup Language),即可擴(kuò)展標(biāo)記語言,是一種簡單的數(shù)據(jù)存儲語言,

2、使用一系列簡單的標(biāo)記描述數(shù)據(jù)。從它誕生到現(xiàn)在,已經(jīng)得到了人們廣泛的支持與應(yīng)用。因為它架起了復(fù)雜的標(biāo)準(zhǔn)通用標(biāo)記語言(SGML)與功能有限的超文本標(biāo)記語言(HTML)之間的橋梁。所謂XML文件的解析是指:把代表XML文檔的一個無結(jié)構(gòu)的字符序列轉(zhuǎn)換成滿足XML語法的結(jié)構(gòu)化組件的過程。解析XML文件通常有三種方式:DOM、SAX、PULL。 1. XML解析的使用遼寧輕工職業(yè)學(xué)院【知識準(zhǔn)備】(1)DOM解析技術(shù)1)DOM的工作原理 使用DOM對XML文件進(jìn)行操作時,首先要解析文件,將文件分為獨立的元素、屬性和注釋等,然后以節(jié)點樹的形式在內(nèi)存中對XML文件進(jìn)行表示,就可以通過節(jié)點樹訪問文檔的內(nèi)容,并根據(jù)

3、需要修改文檔。DOM實現(xiàn)時首先為XML文檔的解析定義一組接口,解析器讀入整個文檔,然后構(gòu)造一個駐留內(nèi)存的樹結(jié)構(gòu),這樣代碼就可以使用DOM接口來操作整個樹結(jié)構(gòu)。 1. XML解析的使用遼寧輕工職業(yè)學(xué)院【知識準(zhǔn)備】2)常用的DOM接口和類 Document:該接口定義分析并創(chuàng)建DOM文檔的一系列方法,它是文檔樹的根,是操作DOM的基礎(chǔ)。 Element:該接口繼承Node接口,提供了獲取、修改XML元素名字和屬性的方法。 Node:該接口提供處理并獲取節(jié)點和子節(jié)點值的方法。 NodeList:提供獲得節(jié)點個數(shù)和當(dāng)前節(jié)點的方法。這樣就可以迭代地訪問各個節(jié)點。 DOMParser:該類是Apache的

4、Xerces中的DOM解析器類,可直接解析XML文件。 1. XML解析的使用遼寧輕工職業(yè)學(xué)院【知識準(zhǔn)備】3)DOM的解析流程對上述給出的XML文件的處理過程如下圖所示。 1. XML解析的使用遼寧輕工職業(yè)學(xué)院【知識準(zhǔn)備】(2)SAX解析技術(shù) SAX(SimpleAPIforXML)是XML簡單應(yīng)用程序接口,是一個公共的基于事件的XML文檔解析標(biāo)準(zhǔn)。它以事件作為解析XML文件的模式,它將XML文件轉(zhuǎn)化成一系列的事件,由不同的事件處理器來決定如何處理。 1. XML解析的使用遼寧輕工職業(yè)學(xué)院【知識準(zhǔn)備】1)SAX的工作原理 簡單地說就是對文檔進(jìn)行順序掃描,當(dāng)掃描到文檔(document)開始與結(jié)

5、束、元素(element)開始與結(jié)束、文檔(document)結(jié)束等地方時通知事件處理函數(shù),由事件處理函數(shù)做相應(yīng)動作,然后繼續(xù)同樣的掃描,直至文檔結(jié)束。 SAX采用事件驅(qū)動,不需要完全讀完xml文件,他是讀到一個節(jié)點就解析一個節(jié)點是否符合xml語法。如果符合就調(diào)用相對應(yīng)的方法其實就是回調(diào)方法,并且沒有記憶功能。 1. XML解析的使用遼寧輕工職業(yè)學(xué)院【知識準(zhǔn)備】2)常用的SAX接口和類Attrbutes:用于得到屬性的個數(shù)、名字和值。 ContentHandler:定義與文檔本身關(guān)聯(lián)的事件(例如,開始和結(jié)束標(biāo)記)。大多數(shù)應(yīng)用程序都注冊這些事件。 DTDHandler:定義與DTD關(guān)聯(lián)的事件。它

6、沒有定義足夠的事件來完整地報告DTD。如果需要對DTD進(jìn)行語法分析,請使用可選的DeclHandler。DeclHandler是SAX的擴(kuò)展。不是所有的語法分析器都支持它。 EntityResolver:定義與裝入實體關(guān)聯(lián)的事件。只有少數(shù)幾個應(yīng)用程序注冊這些事件。 ErrorHandler:定義錯誤事件。許多應(yīng)用程序注冊這些事件以便用它們自己的方式報錯。 DefaultHandler:它提供了這些接口的缺省實現(xiàn)。在大多數(shù)情況下,為應(yīng)用程序擴(kuò)展DefaultHandler并覆蓋相關(guān)的方法要比直接實現(xiàn)一個接口更容易。 1. XML解析的使用遼寧輕工職業(yè)學(xué)院【知識準(zhǔn)備】3)SAX的解析流程對上述給出

7、的XML文件的處理過程如下圖所示。 1. XML解析的使用遼寧輕工職業(yè)學(xué)院【知識準(zhǔn)備】(3)PULL解析技術(shù)1)PULL的工作原理PULL提供了開始元素和結(jié)束元素。當(dāng)某個元素開始時,我們可以調(diào)用parser.nextText()從XML文檔中提取所有字符數(shù)據(jù)。當(dāng)解釋到一個文檔結(jié)束時,自動生成EndDocument事件。2)常用的PULL的接口和類XmlPullParser:XMLpull解析器是一個在XMLPULLV1API中提供了定義解析功能的接口。XmlSerializer:它是一個接口,定義了XML信息集的序列。XmlPullParserFactory:這個類用于在XMPULLV1API

8、中創(chuàng)建XMLPull解析器。XmlPullParserException:拋出單一的XMLpull解析器相關(guān)的錯誤。 1. XML解析的使用遼寧輕工職業(yè)學(xué)院【知識準(zhǔn)備】3)PULL的解析流程對上述給出的XML文件的處理過程如下圖所示 1. XML解析的使用遼寧輕工職業(yè)學(xué)院【知識準(zhǔn)備】(4)這幾種解析技術(shù)的比較1)DOM在處理XML文件時,將XML文件解析成樹狀結(jié)構(gòu)并放入內(nèi)存中進(jìn)行處理。當(dāng)XML文件較小時,我們可以選DOM,因為它簡單、直觀。 2)SAX則是以事件作為解析XML文件的模式,它將XML文件轉(zhuǎn)化成一系列的事件,由不同的事件處理器來決定如何處理。XML文件較大時,選擇SAX技術(shù)是比較合

9、理的。雖然代碼量有些大,但是它不需要將所有的XML文件加載到內(nèi)存中。這樣對于有限的Android內(nèi)存更有效,而且Android提供了一種傳統(tǒng)的SAX使用方法以及一個便捷的SAX包裝器。 使用Android.util.Xml類,從示例中可以看出,會比使用SAX來得簡單。 1. XML解析的使用遼寧輕工職業(yè)學(xué)院【知識準(zhǔn)備】(3) PULL解析并未像SAX解析那樣監(jiān)聽元素的結(jié)束,而是在開始處完成了大部分處理。這有利于提早讀取XML文件,可以極大的減少解析時間,這種優(yōu)化對于連接速度較慢的移動設(shè)備而言尤為重要。對于XML文檔較大但只需要文檔的一部分時,PULL解析器則是更為有效的方法。2. JSON解析

10、的使用遼寧輕工職業(yè)學(xué)院【知識準(zhǔn)備】(1)JSON(JavaScript Object Notation)的定義 一種輕量級的數(shù)據(jù)交換格式,具有良好的可讀和便于快速編寫的特性。業(yè)內(nèi)主流技術(shù)為其提供了完整的解決方案(有點類似于正則表達(dá)式 ,獲得了當(dāng)今大部分語言的支持),從而可以在不同平臺間進(jìn)行數(shù)據(jù)交換。JSON采用兼容性很高的文本格式,同時也具備類似于C語言體系的行為。2. JSON解析的使用遼寧輕工職業(yè)學(xué)院【知識準(zhǔn)備】二在Android中包含四個與JSON相關(guān)的類和一個Exceptions:1)JSONObject:這是系統(tǒng)中有關(guān)JSON定義的基本單元,其包含一對兒(Key/Value)數(shù)值。有

11、兩個不同的取值方法:get(): 在確定數(shù)值存在的條件下使用,否則當(dāng)無法檢索到相關(guān)Key時,將會拋出一個Exception信息。opt(): 這個方法相對比較靈活,當(dāng)無法獲取所指定數(shù)值時,將會返回一個默認(rèn)數(shù)值,并不會拋出異常。2. JSON解析的使用遼寧輕工職業(yè)學(xué)院【知識準(zhǔn)備】2)JSONArray:它代表一組有序的數(shù)值。將其轉(zhuǎn)換為String輸出(toString)所表現(xiàn)的形式是用方括號包裹,數(shù)值以逗號”,”分隔(例如:value1,value2,value3,大家可以親自利用簡短的代碼更加直觀的了解其格式)。這個類的內(nèi)部同樣具有查詢行為,get()和opt()兩種方法都可以通過index索

12、引返回指定的數(shù)值,put()方法用來添加或者替換數(shù)值。 同樣這個類的value類型可以包括:Boolean、JSONArray、JSONObject、Number、String或者默認(rèn)值JSONObject.NULL object。2. JSON解析的使用遼寧輕工職業(yè)學(xué)院【知識準(zhǔn)備】3)JSONStringer: 根據(jù)官方的解釋,這個類可以幫助快速和便捷的創(chuàng)建JSON text。其最大的優(yōu)點在于可以減少由于格式的錯誤導(dǎo)致程序異常,引用這個類可以自動嚴(yán)格按照J(rèn)SON語法規(guī)則(syntaxrules)創(chuàng)建JSON text。每個JSONStringer實體只能對應(yīng)創(chuàng)建一個JSON text。根據(jù)下

13、邊的實例來了解其它相關(guān)信息:view plainString myString = new JSONStringer().object() .key(name) .value(小豬) .endObject() .toString(); 2. JSON解析的使用遼寧輕工職業(yè)學(xué)院【知識準(zhǔn)備】 結(jié)果是一組標(biāo)準(zhǔn)格式的JSON text:name : 小豬 其中的.object()和.endObject()必須同時使用,是為了按照Object標(biāo)準(zhǔn)給數(shù)值添加邊界。同樣,針對數(shù)組也有一組標(biāo)準(zhǔn)的方法來生成邊界.array()和.endArray()。4)JSONTokener:這個是系統(tǒng)為JSONObject

14、和JSONArray構(gòu)造器解析JSON source string的類,它可以從source string中提取數(shù)值信息。5)JSONException:是 類拋出的異常信息。遼寧輕工職業(yè)學(xué)院【知識準(zhǔn)備】(3)JSON Vs XML的比較 1)JSON和XML的數(shù)據(jù)可讀性基本相同 2)JSON和XML同樣擁有豐富的解析手段 3)JSON相對于XML來講,數(shù)據(jù)的體積小 4)JSON與JavaScript的交互更加方便 5)JSON對數(shù)據(jù)的描述性比XML較差 6)JSON的速度要遠(yuǎn)遠(yuǎn)快于XML遼寧輕工職業(yè)學(xué)院【任務(wù)實現(xiàn)】1. 在Eclipse中新建Android項目AndroidDemo8_3。并將單元2任務(wù)8做好的界面導(dǎo)入到本項目中,作為本項目登錄之后的界面。2. 新建名為activity_login.xml.文件,結(jié)合單元2的知識制作登錄界面:遼寧輕工職業(yè)學(xué)院【知識準(zhǔn)備】3. 在src文件夾中新建LoginActivity.java文件,并自定義initView方法實現(xiàn)控件的初始化,定義名為uri的string字符串存放服務(wù)器端地址。4. 自定義LoginThread類繼承Thread類,并對用戶名密碼進(jìn)行封裝。5. 在該run方法中把已經(jīng)封裝好的數(shù)據(jù)通過HTTP發(fā)送到服務(wù)器,并將返回

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論