




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
#11Web服務開發劉寧Email:liuning2@目錄Web服務的基本概述1iPhone平臺Web服務實現2Android平臺Web服務實現32DiagramWeb服務的核心技術及其規范Web服務的調用原理Web服務的應用Web服務的基本概念3Web服務是創建可互操作的分布式應用程序的新平臺。為了達到跨平臺操作,Web服務是完全基于XML、XSD等獨立于平臺、獨立于軟件供應商的標準的。Web服務適用于應用程序集成、B2B集成、代碼和數據重用,以及通過Web進行客戶端和服務器的通信。
Web服務4Web服務一般是由企業發布的,具有特定,商業需求的在線應用服務。應用軟件能夠通過互聯網來訪問和使用這項服務。Web服務的主要目標是在不同平臺下的可操作性。
Web服務的核心技術及其規范5Web服務主要用到以下幾個核心技術和規范:XML:描述數據的標準方法SOAP:表示信息交換的協議WSDL:Web服務描述語言UDDI(UniversalDescription,DiscoveryandIntegration):通用描述、發現與集成協議,它是一種獨立于平臺的,基于XML語言的用于在互聯網上描述商務的協議Web服務的核心技術及其規范6XML(ExtensibleMarkupLanguage)可擴展標記語言XML是當前處理結構化文檔信息的有力工具,是網絡環境中跨平臺并依賴于內容的技術,是一種簡單的數據存儲語言。Web服務的核心技術及其規范7SOAP(SimpleObjectAccessProtocal)
簡單對象訪問協議SOAP技術把基于HTTP的Web技術與XML的可擴展性相結合,實現異構程序和平臺之間的互操作性,使應用能夠被不同的用戶所訪問。Web服務的核心技術及其規范8WSDL(WebServicesDescriptionLanguage)Web服務描述語言WSDL是一種用于描述Web服務的XML格式。WSDL提供服務的詳細操作信息。Web服務的核心技術及其規范9UDDI(UniversalDescription,DiscoveryandIntegration)通用描述、發現與集成協議UDDI是一個獨立平臺的,基于XML語言的注冊表和機制。注冊表記錄了互聯網上的商務應用。它也提供了等級和查找Web服務應用程序的機制。Web服務的核心技術及其規范10Web服務的架構Web服務的核心技術及其規范11WSDLiWSDLUDDI服務協議服務請求者服務提供者f(x)SOAP服務提供者首先建立Web服務,然后把服務發布給所有用戶。
任何平臺上的用戶可以通過閱讀其WSDL文檔生成一個SOAP請求消息。這個SOAP消息嵌入到一個HTTPPOST請求中發送到Web服務所在的Web服務器。Web服務器把請求轉發給Web服務請求處理器,請求處理器解析SOAP請求,然后調用Web服務生成相應的SOAP應答。Web服務器得到SOAP應答后通過HTTP送回客戶端。
Web服務調用原理12高層接口使用高層接口,不需要知道SOAP和XML的任何信息,就可以生成和使用一個Web服務。SoapTookit2.0通過提供SoapClient和SoapServer兩個COM對象來完成這些功能。Web服務調用原理13低層接口使用低層接口必須對SOAP和XML有所了解。這種接口可以對SOAP的處理過程進行控制,特別是要做特殊處理的時候。創建一個HttpConnector對象負責HTTP連接。創建SoapSerializer對象,用于生成SOAP消息。SOAP消息作為Playload通過HttpConnector被發送到服務端。生成呢個一個SoapReader對象,負責讀取服務端返回的SOAP消息。Web服務調用原理14Web服務的應用范圍包括兩個方面:企業之間的應用企業內部的應用Web服務的應用15企業之間的應用:Web服務用于電子商務應用的標準和開發工具。企業間的電子商務(B2B):Web服務應用于以企業采購、物流和分銷內容的供應鏈企業與消費者之間的電子商務(B2C):Web服務應用于涉及到零售以及中間業務的支付系統Web服務的應用16企業內部的應用:采用中間件應用服務器軟件作為工具將企業各項應用都進行改造和開發企業內部應用軟件的網絡化,包括現在流行的ERP以及CRM等Web服務的應用17Android平臺Web服務實現18第三方類庫(KSOAP2)簡介KSOAP2的使用應用實例詳解KSOAP是一個應用于資源有限的Java環境的SAOPWeb服務客戶端庫。它一般應用在Applets或者J2ME應用程序。第三方類庫(KSOAP2)簡介19官方網站:/KSOAP2還改進了對Microsoft.Net的兼容KSOAP2的使用20SoapEnvelope與SOAP規范中的SOAPEnvelope相對應,封裝了head和body。SoapSerializationEnvelope對SoapEnvelope進行了擴展來支持SOAP序列化規范,能夠把簡單對象自動進行序列化。KSOAP2的常用接口接口org.kSOAP2.SoapEnvelopeorg.kSOAP2.SoapSerializationEnvelopeorg.kSOAP2.SoapObjectorg.KSOAP2.transport.HttpTransport21SoapObject能夠構造SOAP調用。HttpTransport屏蔽了網絡請求或訪問以及獲取服務器SOAP的具體細節。KSOAP2的常用接口接口org.kSOAP2.SoapEnvelopeorg.kSOAP2.SoapSerializationEnvelopeorg.kSOAP2.SoapObjectorg.KSOAP2.transport.HttpTransport22利用Web服務傳遞String給MIDP(MobileInformationDeviceProfile,移動信息設備配置文件)首先在服務器端編寫主服務類KSOAP和Web服務服務器端PublicclasskSOAPWS{publickSOAPWS(){}publicStringWSMethod(Stringuser,Stringpwd){return“WSResponse”;}}23KSOAP調用服務器的Web服務有6步:指定Web服務的命名空間和調用方法的名稱;設置調用方法的參數(可選);生成調用Web服務的SOAP請求信息;指定Web服務的WSDL文檔的URL;利用call調用Web服務;利用getResponse方法獲得Web服務的返回結果。KSOAP和Web服務24指定Web服務的命名空間和調用方法的名稱利用SoapObject類完成調用。ServiceNamespace–Web服務的命名空間,可從WSDL文檔中找到;MethodName–所調用方法的名字。KSOAP和Web服務SoapObjectrequest=newSoapObject(ServiceNamespace,MethodName);25設置調用方法的參數(可選),如果方法沒有參數,則這一步可以省略。addProperty方法設置的參數需要與Web服務類中的方法參數順序保持一致。參數對大小寫敏感,要與服務端一致.KSOAP和Web服務request.addProperty(“User”,“Password”);26利用SoapSerializationEnvelope對象生成調用Web服務的SOAP請求信息SoapEnvelope.VER11是SOAP協議的版本號,該版本號要與服務器端Web服務的版本號一致;在創建SOAP序列化封裝對象后,需要設置屬性bodyOut為第一步的SoapObject對象。KSOAP和Web服務SoapSerializationEnvelopeen=newSoapSerializationEnvelope(SoapEnvelope.VER11);en.bodyOut=request;en.dotNet=true;/*訪問.NET的WebService必須加上這行*/27創建HttpTransportSE對象,通過這個對象的構造方法指定Web服務的WSDL文檔的URL注意:模擬器訪問本主機的IP是使用call方法調用Web服務第1個參數是完整的方法名,前面加上命名空間.第2個參數是第3步創建的SOAP序列化封裝對象。KSOAP和Web服務HttpTransportSEHT=newHttpTransportSE(WSDL_URL);HT.call(ServiceNamespace+MethodName,en);28使用getResponse方法獲得Web服務的返回結果返回值是對象時:利用第3步創建的SOAP序列化封裝對象獲得的Web服務的返回結果,并強制類型轉換為SoapObject類。返回值是單值時:利用toString()得到結果.SoapPrimitive
SO=(SoapPrimitive)en.getResponse();Stringtxt=SO.toString();/*返回值轉換成字符串*/KSOAP和Web服務SoapObjectSO=(SoapObject)en.getResponse();29KSOAP調用Web服務需要運用HttpTransport類,實際上是調用了HttpConnection作為網絡連接。在KSOAP調用Web服務的時候,如果由于某種原因,Web服務不能立即返回,Android界面上的組件仍然需要處于活動狀態供用戶使用,不能造成阻塞。為了防止UI組件的阻塞,KSOAP調用Web服務的時候,必須另起一個線程。KSOAP和Web服務30KSOAP能夠把四種SOAP類型映射為Java類型:其余類型需要進行類型映射,把成員變量序列化為byte[],通過網絡傳送后再放序列化。KSOAP的類型映射SOAPTypeJavaTypexsd:intjava.lang.Integerxsd:longjava.lang.Longxsd:stringjava.lang.Stringxsd:booleanjava.lang.Boolean31在KSOAP中,利用Base64把二進制流編碼為ASCII字符串,使二進制數據能夠通過XML/SOAP傳輸;Org.kSOAP2.serialization中的MarshalBase64的目的就是把SOAPXML中的xsd:base64Binary元素序列化為Java字節數組類型。KSOAP2提供Marshaldate和MarshalHashtable類來把相應的元素序列化為Java的Data和Hashtable類型。KSOAP的類型映射32通過Web服務查詢亞馬遜網上書店書目提交包含關鍵字的書目查詢,如果查詢成功,將會返回一系列書名節點,每一本書都提供作者、出版社、出版日期、價格等信息書名節點在一個”Details”節點下,查詢結果的總數放在TotalResult節點每頁10個結果,可以通過查看TotalPages節點來確定需要多少頁要測試工程,必須到亞馬遜注冊獲取AccessKeyIDKSOAP應用實例33亞馬遜的書目查詢Web服務:關鍵詞查詢請求方法:KSOAP應用實例34KSOAP2可以簡單地通過SoapObject的getProperty方法來得到書詳細信息的節點,存儲到Vector對象中:HttpTransportht =newHttpTransport("/onca/soap3");ht.call(null,envelope);SoapObjectresult=(SoapObject)envelope.getResult();VectorresultVector=(Vector)result.getProperty("Details");KSOAP應用實例35在Vector對象中存儲了一組SoapObject對象,每個SoapObject對象對應一本書的DOM對象,要得到每一本書的書名和價格:for(inti=0;i<resultVector.size();i++){
SoapObjectdetail=(SoapObject)resultVector.elementAt(i);
System.out.println("書名>>"+(String)detail.getProperty("ProductName")); System.out.println("日期>>"+(String)detail.getProperty("ReleaseDate")); System.out.println("價格>>"+(String)detail.getProperty("ListPrice"));}KSOAP應用實例36具體程序://WSDL文檔的URLprivatestaticfinalStringNAMESPACE="/AWSECommerceService/2006-05-17";//從亞馬遜網站獲取的AccessKeyIDprivatestaticfinalStringAMAZON_WEBSERVICE_KEY="";publicAmazonSearchClient(){if(AMAZON_WEBSERVICE_KEY.length()==0){System.out.println("Pleasesubstituteyourownamazonwebservicekeybeforerunningthiscode.");}KSOAP應用實例37具體程序:else{RequestrequestObject=newRequest();requestObject.author="Whyte";requestObject.searchIndex="Books";
//第1步:創建SoapObject對象,并制定Web服務的命名空間 SoapObjectrequest =newSoapObject(NAMESPACE,"ItemSearch");
//第2步:設置Web服務方法的參數 request.addProperty("SubscriptionId", AMAZON_WEBSERVICE_KEY); request.addProperty("Request",requestObject);KSOAP應用實例38具體程序:
//第3步:創建SoapSerializationEnvelope對象,并制定Web服務的版
本 SoapSerializationEnvelopeenvelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request); requestObject.register(envelope); registerObjects(envelope);
//第4步:創建HttpTransportSE對象,并指定WSDL文檔的URL HttpTransportSEhttpTransportSE =newHttpTransportSE("/onca/ soap?Service=AWSECommerceService");httpTransportSE.setXmlVersionT
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 繪畫心理課課件
- 浙江2025年03月寧波市農業農村局下屬事業單位公開招考8名編外工作人員筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 防返貧監和幫扶課件
- 護理服務禮儀規范
- 2025年04月福建省泉州海關綜合技術服務中心公開招聘編外員工筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 年度工作總結個人模板
- 秋日森林美術課件
- 畫春天花瓶課件
- 倉庫搬運安全培訓
- 洗滌劑環保性能檢測技術-全面剖析
- 【課件】時代與變革-為人生而藝術 課件高中美術人美版(2019)美術鑒賞
- 建設工程施工合同(示范文本)GF-2020-0201模板
- 食品接觸材料控制程序
- 人教版高一數學必修一全套教案
- ups并機工作原理及擴容方案
- 北師大版七年級下冊實驗通知單
- 《工程款結算單》
- 關于提高航空公司輪椅旅客服務的對策研究
- 新編日語第二冊(全)
- pantone色卡電子版U面5頁
- 20幅肝臟切面彩超圖講解
評論
0/150
提交評論