已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Webservice 第一天 jaxws編程方法 綜合案例Webservice課程安排:兩天課:第一天:什么是webservice?從案例(便民查詢網(wǎng)站)分析如何實(shí)現(xiàn)?使用socket實(shí)現(xiàn)。使用jaxws開發(fā)webservice。Webservice三要素Wsdl(webservice使用說明書)重點(diǎn)掌握Soap(jaxws開發(fā)webservice的傳輸協(xié)議)重點(diǎn)掌握UDDI(了解)Webservice的使用場(chǎng)景分析(掌握)學(xué)會(huì)jaxws基本開發(fā)方法(重點(diǎn))Soap1.1和soap1.2區(qū)別:跟蹤soap協(xié)議綜合案例:使用webservice傳輸xml數(shù)據(jù)(重點(diǎn)掌握)第二天:Jaxws的深入開發(fā):常用注解測(cè)試jaxws傳輸復(fù)雜對(duì)象類型CXF開發(fā)webservice:CXF入門程序Spring+cxf整合(重點(diǎn))CXF發(fā)布rest的webservice。(重點(diǎn))綜合案例:實(shí)現(xiàn)便民查詢網(wǎng)站1 便民網(wǎng)站分析1.1 需求通過便民網(wǎng)站,查詢?nèi)粘P畔ⅰ?.2 分析從遠(yuǎn)程系統(tǒng)中獲取信息從遠(yuǎn)程系統(tǒng)中獲取信息氣象局天氣信息表現(xiàn)層Html,css業(yè)務(wù)層service移動(dòng)運(yùn)營(yíng)商手機(jī)號(hào)信息數(shù)據(jù)層dao數(shù)據(jù)庫(kù),沒有天氣信息udptcp客戶端/服務(wù)器模式:服務(wù)端氣象局移動(dòng)運(yùn)營(yíng)商客戶端自己開發(fā)便民查詢網(wǎng)站遠(yuǎn)程調(diào)用Tcp:是一種傳輸層協(xié)議,是一種面向連接的協(xié)議,經(jīng)過三次握手客戶端和服務(wù)端連接一個(gè)連接(通道)。Tcp傳輸數(shù)據(jù)時(shí)穩(wěn)定。Udp:是一種傳輸層協(xié)議,是一種數(shù)據(jù)報(bào)協(xié)議,速度是很快的,不穩(wěn)定的。它是面向非連接的協(xié)議,它不與對(duì)方建立連接,而是直接就把數(shù)據(jù)包發(fā)送過去最終采用tcp通信方式,客戶端向服務(wù)端發(fā)起請(qǐng)求,查詢天氣信息。1.3 Socket實(shí)現(xiàn)天氣查詢1、 jaxws開發(fā)webservice和socket對(duì)比分析2、 重視socket開發(fā),企業(yè)開發(fā)后臺(tái)服務(wù)常使用socket。a) 服務(wù)端要有可持續(xù)運(yùn)行能力,保證線程一直在運(yùn)行b) 并發(fā)處理能力,要使用多線程1.3.1 分析outputstreaminputstreaminputstreamoutputstream客戶端連接socket服務(wù)端服務(wù)端使用ServerSocket創(chuàng)建socket服務(wù)端1.3.2 實(shí)現(xiàn) 準(zhǔn)備環(huán)境:Jdk2Eclipse indigoMysql.2 創(chuàng)建服務(wù)端: 創(chuàng)建客戶端:1.3.3 小結(jié)使用socket傳輸數(shù)據(jù)需要程序員關(guān)注如何解析數(shù)據(jù)流。設(shè)想,如果可以面向?qū)ο箝_發(fā),直接傳輸java對(duì)象,減輕程序員開發(fā)的復(fù)雜度。1.4 Java開發(fā)webserviceJAVA 中共有三種WebService 規(guī)范,分別是JAX-WS(JAX-RPC)、JAXM&SAAJ、JAX-RS。1.4.1 Jaxws(掌握)JAX-WS 的全稱為 Java API for XML-Based Webservices ,早期的基于SOAP 的JAVA 的Web 服務(wù)規(guī)范JAX-RPC(Java API For XML-Remote Procedure Call)目前已經(jīng)被JAX-WS 規(guī)范取代。從java5開始支持JAX-WS2.0版本,Jdk1.6.0_13以后的版本支持2.1版本,jdk1.7支持2.2版本。Jaxws開發(fā)的webservice傳輸soap協(xié)議。1.4.2 JAXM&SAAJ(了解)JAXM(JAVA API For XML Message)主要定義了包含了發(fā)送和接收消息所需的API,SAAJ(SOAP With Attachment API For Java,JSR 67)是與JAXM 搭配使用的API,為構(gòu)建SOAP 包和解析SOAP 包提供了重要的支持,支持附件傳輸?shù)龋琂AXM&SAAJ 與JAX-WS 都是基于SOAP 的Web 服務(wù),相比之下JAXM&SAAJ 暴漏了SOAP更多的底層細(xì)節(jié),編碼比較麻煩,而JAX-WS 更加抽象,隱藏了更多的細(xì)節(jié),更加面向?qū)ο?,?shí)現(xiàn)起來你基本上不需要關(guān)心SOAP 的任何細(xì)節(jié)JAXM&SAAJ 暴漏了SOAP更多的底層細(xì)節(jié),編碼比較麻煩,JAXM&SAAJ通常不使用。1.4.3 JAX-RS(掌握)JAX-RS 是JAVA 針對(duì)REST(Representation State Transfer)風(fēng)格制定的一套Web 服務(wù)規(guī)范,由于推出的較晚,該規(guī)范(JSR 311,目前JAX-RS 的版本為1.0)并未隨JDK1.6 一起發(fā)行。Rest定義參考:理解RESTful架構(gòu).docx需要大家重視,當(dāng)前比較流行,因?yàn)閖ax-RS可以發(fā)布 rest風(fēng)格webservice,因?yàn)閞est的webservice不采用soap傳輸,直接采用http傳輸,可以返回xml或json,比較輕量。1.5 Jaxws實(shí)現(xiàn)天氣查詢支持java面向?qū)ο箝_發(fā)。1.5.1 服務(wù)端定義java接口,提供天所查詢方法。 SEI編寫SEI(Service Endpoint Interface),SEI在webservice中稱為portType,在java中稱為接口public interface WeatherInterface /根據(jù) 城市名稱查詢天氣信息public String queryWeather(String cityName); SEI實(shí)現(xiàn)類 發(fā)布webservice服務(wù)錯(cuò)誤:發(fā)布服務(wù),如果服務(wù)端口已被暫用報(bào)錯(cuò): 驗(yàn)證webservice服務(wù)是否發(fā)布成功在webservice的地址后邊添加?wsdl,查詢webservice的使用說明書內(nèi)容是否完整,如果wsdl內(nèi)容完整,表示webservice發(fā)布成功。閱讀 wsdl方法:Wsdl是xml格式文檔。從下往上讀。找到service:里邊有port,Binding最終通過binding找到portTypeportType有方法,調(diào)用webservice就是調(diào)用porttype的方法。最終找到porttype,其中有方法,說明 wsdl文檔基本上完整。必須存在調(diào)用服務(wù)類及方法。1.5.2 客戶端支持面向?qū)ο箝_發(fā)??蛻舳斯δ苷{(diào)用webservice,先知道webservice地址:一般情況下,只要知道 wsdl的地址,就可以知道 webservice地址。天氣查詢服務(wù)地址::12345/weather?wsdl 閱讀wsdl找到service(服務(wù)視圖)通過binding找到portType(服務(wù)端點(diǎn)) 使用wsimport生成webservice的客戶端調(diào)用代碼Wsimport:是jdk提供的一個(gè)工具,作用是根據(jù)webservice的wsdl地址生成客戶端調(diào)用代碼。單獨(dú)創(chuàng)建一個(gè)工程wsimport存放生成代碼.通過cmd進(jìn)入工程wsimport目錄。生成代碼:默認(rèn)生成的代碼所在包名,是wsdl中命名空間的倒序??梢酝ㄟ^wsimport p指定包名。詳細(xì)參見筆記。 將生成 的代碼拷貝到客戶端工程中編寫客戶端程序:2 Webservice與socket的區(qū)別(重點(diǎn)理解)Socket:是一種傳輸層的協(xié)議。常用tcp、udp。Socket是操作系統(tǒng) 提供的一套網(wǎng)絡(luò)接口,不同的編程語(yǔ)言都有實(shí)現(xiàn) 。Socket是跨平臺(tái)的。傳輸數(shù)據(jù)時(shí)需要程序員自己解析數(shù)據(jù)流。優(yōu)點(diǎn) :傳輸速度很快。應(yīng)用場(chǎng)景:如果要考慮傳輸速度,優(yōu)先使用SocketWebservice使用soap協(xié)議:基于http的應(yīng)用層協(xié)議,http也是應(yīng)用層協(xié)議,基于socket傳輸數(shù)據(jù)。http或soap都是跨平臺(tái)的。soap在http協(xié)議的基礎(chǔ)上,一個(gè)基于XML的協(xié)議。不同:都是底層的通信協(xié)議,請(qǐng)求包的格式不同而已,soap包是XML格式,http純文本格式。Jaxws開發(fā)Webservice,傳輸數(shù)據(jù)庫(kù)是面向?qū)ο蠓绞?,不用程序員自己解析數(shù)據(jù)流。Webservice如何傳輸數(shù)據(jù):Java對(duì)象 依據(jù)XSD(webservice數(shù)據(jù)類型標(biāo)準(zhǔn))將java對(duì)象進(jìn)行序列化成soap協(xié)議Java對(duì)象客戶端服務(wù)端因?yàn)閣ebservice要經(jīng)過兩次序列化,傳輸速度不快。缺點(diǎn):傳輸速度慢。優(yōu)點(diǎn):面向?qū)ο?開發(fā),soap協(xié)議是一個(gè)標(biāo)準(zhǔn)協(xié)議,方便進(jìn)行跨平臺(tái)、跨公司進(jìn)行接口開發(fā)。應(yīng)用場(chǎng)景:不考慮傳輸速度前提下,根據(jù)soap標(biāo)準(zhǔn)協(xié)議,方便進(jìn)行接口定義。3 什么是webserviceweb 服務(wù)+跨平臺(tái)+遠(yuǎn)程調(diào)用+soap協(xié)議傳輸數(shù)據(jù)3.1 定義Webservice即web 服務(wù),是一種跨平臺(tái)的遠(yuǎn)程調(diào)用技術(shù),基于http的soap協(xié)議傳輸數(shù)據(jù),也可以直接使用http傳輸數(shù)據(jù)。l Web service 即web服務(wù),它是一種跨編程語(yǔ)言和跨操作系統(tǒng)平臺(tái)的遠(yuǎn)程調(diào)用技術(shù)即跨平臺(tái)遠(yuǎn)程調(diào)用技術(shù)。l 采用標(biāo)準(zhǔn)SOAP(Simple Object Access Protocol) 協(xié)議傳輸,soap屬于w3c標(biāo)準(zhǔn)。Soap協(xié)議是基于http的應(yīng)用層協(xié)議,soap協(xié)議傳輸是xml數(shù)據(jù)。l 采用wsdl作為描述語(yǔ)言即webservice使用說明書,wsdl屬w3c標(biāo)準(zhǔn)。l xml是webservice的跨平臺(tái)的基礎(chǔ),XML主要的優(yōu)點(diǎn)在于它既與平臺(tái)無(wú)關(guān),又與廠商無(wú)關(guān)。l XSD,W3C為webservice制定了一套傳輸數(shù)據(jù)類型,使用xml進(jìn)行描述,即XSD(XML Schema Datatypes),任何編程語(yǔ)言寫的webservice接口在發(fā)送數(shù)據(jù)時(shí)都要轉(zhuǎn)換成webservice標(biāo)準(zhǔn)的XSD發(fā)送。當(dāng)前非SOAP協(xié)議的webService以輕量為首要目標(biāo),比如rest webservice也是webservice的一種方式。3.2 webService三要素3.2.1 soapsoap協(xié)議是webservice是傳輸協(xié)議,即簡(jiǎn)單對(duì)象訪問協(xié)議。Soap協(xié)議是xml格式,理解為基于http傳輸xml數(shù)據(jù)。Soap=http+xml3.2.2 wsdlwsdl是webservice的使用說明書。根據(jù)wsdl去如何調(diào)用webservice。從下往上讀,找到service服務(wù)視圖,通過binding找到portType(服務(wù)類)。3.2.3 UDDI(了解)UDDI是一個(gè)目錄服務(wù),存儲(chǔ)了全球的webservice地址。UDDI旨在將全球的webservcie資源進(jìn)行共享,促進(jìn)全球經(jīng)濟(jì)合作。3.3 Webservice應(yīng)用場(chǎng)景單點(diǎn)登陸,將登陸驗(yàn)證接口暴漏出來,可以 以webservice的接口來暴漏。統(tǒng)一來記錄用戶信息3.3.1 用于分布式應(yīng)用集成,實(shí)現(xiàn)軟件重用http、soap系統(tǒng)B系統(tǒng)A系統(tǒng)A和系統(tǒng)B可以通過單點(diǎn)登陸系統(tǒng)進(jìn)行用戶身份認(rèn)證。單點(diǎn)登陸系統(tǒng):將用戶登陸功能抽取出來,組成一個(gè)單獨(dú)系統(tǒng),達(dá)到軟件重用的目標(biāo)。用戶信息可以在單點(diǎn)登陸系統(tǒng)一處存儲(chǔ),系統(tǒng)A和系統(tǒng)B不用記錄用戶信息,方便有效進(jìn)行系統(tǒng)集成。3.3.2 建議不用webservice同構(gòu)程序間通信可以不用webservice,前提是多個(gè)同構(gòu)程序是相同的公司開發(fā)的。比如:一個(gè)公司作了兩個(gè)程序,都 是java,采用java提供一個(gè)遠(yuǎn)程調(diào)用技術(shù),RMI。RMI 指的是遠(yuǎn)程方法調(diào)用 (Remote Method Invocation)。RMI基于socket傳輸數(shù)據(jù),支持面向?qū)ο螅萻oap協(xié)議傳輸快。SocketRMIsoap3.3.3 建議使用webservicel 公開接口:在互聯(lián)網(wǎng)發(fā)布服務(wù)接口,不考慮客戶端的類型,使用webservice發(fā)布服務(wù)。因?yàn)閣ebservice基于soap協(xié)議(w3c標(biāo)準(zhǔn)協(xié)議),所以使用soap發(fā)布服務(wù)。l 調(diào)用webservice服務(wù)端由于webservice服務(wù)端已確定,作為客戶端別無(wú)選擇。3.4 Webservice優(yōu)缺點(diǎn)3.4.1 優(yōu)點(diǎn):1 、采用xml支持跨平臺(tái)遠(yuǎn)程調(diào)用。2、基于http的soap協(xié)議,可跨越防火墻。(因?yàn)镾OAP一般使用HTTP協(xié)議,而服務(wù)器的這個(gè)協(xié)議一般都是開放的,而且是可以穿過防火墻的)3、支持面向?qū)ο箝_發(fā)。4、有利于軟件和數(shù)據(jù)重用,實(shí)現(xiàn)松耦合。3.4.2 缺點(diǎn):1、 由于soap是基于xml傳輸,本身使用xml傳輸會(huì)傳輸一些無(wú)關(guān)的東西從而效率不高,隨著soap協(xié)議的完善,soap協(xié)議增加了許多內(nèi)容,這樣就導(dǎo)致了使用soap協(xié)議去完成簡(jiǎn)單的數(shù)據(jù)傳輸?shù)男什桓摺H绻苯佑胔ttp傳輸自定義數(shù)據(jù)內(nèi)容比webservice開發(fā)更快捷,例如第三方支付公司的支持接口。3.5 小結(jié)Webservice是基于http發(fā)布web 服務(wù),可以采用soap協(xié)議作為傳輸數(shù)據(jù)格式,也可以直接使用http傳輸數(shù)據(jù),比如rest方式。3.6 再談socket和webservice應(yīng)用場(chǎng)景Socket:優(yōu)點(diǎn):傳輸速度快缺點(diǎn):需要手動(dòng)解析數(shù)據(jù)流,如果用socket傳輸數(shù)據(jù)需要接口雙方定義接口協(xié)議格式(傳什么格式xml,傳什么json?),自定義協(xié)議,不方便進(jìn)行接口開發(fā)。場(chǎng)景:要考慮傳輸速度,優(yōu)先使用socket,但是需要自定義協(xié)議(接口雙方定義一個(gè)傳輸?shù)臄?shù)據(jù)格式)。Socket開發(fā):注意:socket服務(wù)可持續(xù)性,高并發(fā)性。Webservice:優(yōu)點(diǎn):采用標(biāo)準(zhǔn)soap協(xié)議,接口雙方只要遵循標(biāo)準(zhǔn)協(xié)議開發(fā)使用接口。通過wsdl知道接口內(nèi)容。方便進(jìn)行接口開發(fā)。缺點(diǎn):傳輸速度慢。場(chǎng)景:公開接口,在不考慮客戶端類型或傳輸性能,接口面向整個(gè)互聯(lián)網(wǎng),優(yōu)先考慮webservice。Webservice性能差的原因:如果傳輸soap經(jīng)過兩次對(duì)象序列化,webservice的性能依賴中間件的性能。4 wsdl4.1 定義WSDL 指網(wǎng)絡(luò)服務(wù)描述語(yǔ)言(Web Services Description Language)。WSDL是一種使用 XML 編寫的文檔。這種文檔可描述某個(gè) Web service。它可規(guī)定服務(wù)的位置,以及此服務(wù)提供的操作(或方法)。WSDL 是一種 XML 文檔WSDL 用于描述網(wǎng)絡(luò)服務(wù)WSDL 也可用于定位網(wǎng)絡(luò)服務(wù)通過wsdl知道webservice如何調(diào)用。4.2 說明書結(jié)構(gòu)從下往上讀: 服務(wù)視圖,webservice的服務(wù)結(jié)點(diǎn),它包括了服務(wù)端點(diǎn) 為每個(gè)服務(wù)端點(diǎn)定義消息格式和協(xié)議細(xì)節(jié) 服務(wù)端點(diǎn),描述 web service可被執(zhí)行的操作方法,以及相關(guān)的消息,通過binding指向portType 定義一個(gè)操作(方法)的數(shù)據(jù)參數(shù)(可有多個(gè)參數(shù)) 定義 web service 使用的全部數(shù)據(jù)類型4.3 公網(wǎng)天氣查詢開發(fā)只需要開發(fā)查詢公網(wǎng)天氣客戶端4.3.1 閱讀 wsdlService服務(wù)視圖:portType服務(wù)端點(diǎn):4.3.2 使用wsimport生成客戶端調(diào)用代碼需要知道wsdl的地址。Wsimport不支持soap1.2的客戶端代碼生成。4.3.3 將生成代碼拷貝到工程中,開發(fā)客戶端使用客戶端生成代碼調(diào)用服務(wù)端:4.3.4 小結(jié)使用客戶端生成的代碼調(diào)用服務(wù)端,缺點(diǎn):將webservice的地址封裝在生成代碼中,如果將來webservice地址改變,需要重新生成,修改客戶端調(diào)用代碼。不方便系統(tǒng)維護(hù)。5 上午課程回顧什么是webservice?Webservice即web服務(wù),基于http的soap 協(xié)議傳輸,也可以只基于http傳輸數(shù)據(jù)。什么是Wsdl?Wsdl就是網(wǎng)絡(luò)服務(wù)的描述語(yǔ)言,即webservice的使用說明書。從下往上讀:先找到service服務(wù)視圖再通過binding找到portType找到portType中的服務(wù)方法Jaxws開發(fā)webservice步驟:服務(wù)端開發(fā):定義SEI(service endpoint interface)服務(wù)端點(diǎn),即portType,在java中是接口定義SEI的實(shí)現(xiàn)類,類上邊使用webservice注解標(biāo)記它是一個(gè)webservice服務(wù)類。發(fā)布服務(wù):/第一個(gè)參數(shù):webservice的地址/第二個(gè)參數(shù):使用webService標(biāo)記的服務(wù)對(duì)象Endpoint.publish(:12345/weather, new WeatherInterfaceImpl();客戶端開發(fā):第一種方法:使用客戶端生成代碼調(diào)用webservice。第一步:Wsimport根據(jù) wsdl生成客戶端調(diào)用代碼第二步:將生成的代碼拷貝到工程中編寫客戶端代碼1 創(chuàng)建Service服務(wù)視圖2 通過服務(wù)視圖得到portType3 調(diào)用portType方法此方法缺點(diǎn):將webservice的地址在生成代碼寫死 了,如果webservice地址變更需要重新生成代碼。系統(tǒng)維護(hù)不方便。6 客戶端開發(fā)第二種方法Jaxws標(biāo)準(zhǔn)方法:6.1 使用jdk的service類調(diào)用webservice。6.2 使用jaxws標(biāo)準(zhǔn)方法調(diào)用公網(wǎng)天氣查詢:6.3 小結(jié)使用jaxws標(biāo)準(zhǔn)方法調(diào)用webservice可以指定webservice地調(diào)用地址,比通過生成代碼調(diào)用webservice要靈活!7 soap7.1 定義soap,簡(jiǎn)單對(duì)象訪問協(xié)議,基于http傳輸xml數(shù)據(jù),soap協(xié)議體是xml格式。SOAP 是一種網(wǎng)絡(luò)通信協(xié)議SOAP即Simple Object Access Protocol簡(jiǎn)易對(duì)象訪問協(xié)議SOAP 用于跨平臺(tái)應(yīng)用程序之間的通信SOAP 被設(shè)計(jì)用來通過因特網(wǎng)(http)進(jìn)行通信SOAP HTTP+XML,其實(shí)就是通過HTTP發(fā)xml數(shù)據(jù)SOAP 很簡(jiǎn)單并可擴(kuò)展支持面向?qū)ο骃OAP 允許您跨越防火墻SOAP 將被作為 W3C 標(biāo)準(zhǔn)來發(fā)展7.2 使用TCP/IP Monitor監(jiān)視Soap協(xié)議7.2.1 TCP/IP Monitor配置TCP/IP Monitor:是eclipse自帶的一個(gè)工具,通過代理的方法監(jiān)視tcp協(xié)議內(nèi)容。通過TCP/IP Monitor監(jiān)視soap協(xié)議內(nèi)容。TCP/IP Monitor代理,將客戶端請(qǐng)求轉(zhuǎn)發(fā)給服務(wù)端Webservice服務(wù)端Webservice客戶端TCP/IP Monitor配置:7.2.2 測(cè)試:編寫webservice客戶端,向代理端口中發(fā)送數(shù)據(jù)。地址::54321/weather?wsdl客戶端請(qǐng)求的soap協(xié)議內(nèi)容:POST /weather HTTP/1.1Accept: text/xml, multipart/relatedContent-Type: text/xml; charset=utf-8SOAPAction: /WeatherInterfaceImpl/queryWeatherRequestUser-Agent: JAX-WS RI 2.2.4-b01Host: :54321Connection: keep-aliveContent-Length: 226Soap協(xié)議體內(nèi)容:Xml格式。鄭州響應(yīng)內(nèi)容:HTTP/1.1 200 OKTransfer-encoding: chunkedContent-type: text/xml; charset=utf-8Date: Tue, 30 Dec 2014 06:40:50 GMT晴7.2.3 Soap協(xié)議體內(nèi)容必需有 Envelope 元素,此元素將整個(gè) XML 文檔標(biāo)識(shí)為一條 SOAP 消息可選的 Header 元素,包含頭部信息必需有Body 元素,包含所有的調(diào)用和響應(yīng)信息 可選的 Fault 元素,提供有關(guān)在處理此消息所發(fā)生錯(cuò)誤的信息 . . . . . . Soap協(xié)議常用1.1和1.2兩個(gè)版本。7.3 通過http發(fā)送soap協(xié)議體(xml)7.3.1 思路 模擬一個(gè)http的客戶端(相當(dāng)于一個(gè)瀏覽器),客戶端通過程序?qū)崿F(xiàn),向webservice的服務(wù)端發(fā)送soap協(xié)議(xml)。http客戶端意義(掌握):在企業(yè)開發(fā)中,很多都 是http接口,需要寫程序模擬http請(qǐng)求,請(qǐng)求數(shù)據(jù)解析數(shù)據(jù)。7.3.2 實(shí)現(xiàn)/開啟 一個(gè)http鏈接/webservice地址URL url = new URL(:12345/weather);HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();/設(shè)置post請(qǐng)求,post是大寫httpURLConnection.setRequestMethod(POST);/Content-Type: text/xml; charset=utf-8httpURLConnection.setRequestProperty(Content-Type, text/xml; charset=utf-8);/設(shè)置請(qǐng)求和響應(yīng)httpURLConnection.setDoInput(true);httpURLConnection.setDoOutput(true);String requestString = requestString(鄭州);/發(fā)送soap協(xié)議httpURLConnection.getOutputStream().write(requestString.getBytes();/接收響應(yīng)內(nèi)容InputStream inputStream = httpURLConnection.getInputStream();ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();int len=-1;byte b = new byte1024;/將inputStream內(nèi)容寫到byteArrayOutputStreamwhile(len= inputStream.read(b, 0, 1024)!=-1)byteArrayOutputStream.write(b, 0, len);/獲取響應(yīng)內(nèi)容 String responseString = byteArrayOutputStream.toString();System.out.println(responseString);/解析響應(yīng)的xml數(shù)據(jù)。/.inputStream.close();byteArrayOutputStream.close();7.3.3 課后作業(yè)上網(wǎng)查找 httpclient的使用方法:/Httpclient就是模擬http的請(qǐng)求,在企業(yè)開發(fā)中通過httpclient向http服務(wù)端請(qǐng)求,獲取接口內(nèi)容。7.3.4 Soap1.2協(xié)議測(cè)試如何將service類發(fā)布soap1.2:在SEI實(shí)現(xiàn)類上添加如下注解BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)Soap1.2要發(fā)布,需要下載擴(kuò)展包:Jaxws實(shí)現(xiàn)soap1.2需要加入jaxws擴(kuò)展包,從sun下載jaxws-ri-2.2.8,解壓jaxws-ri-2.2.8并將lib下的jar包加載到j(luò)ava工程中。修改service代碼:Wsdl內(nèi)容,有soap12前綴:soap1.2請(qǐng)求和響應(yīng):請(qǐng)求內(nèi)容:POST /weather HTTP/1.1Accept: application/soap+xml, multipart/relatedContent-Type: application/soap+xml; charset=utf-8;action=/WeatherInterfaceImpl/queryWeatherRequestUser-Agent: JAX-WS RI 2.2.4-b01Host: :54321Connection: keep-aliveContent-Length: 224鄭州響應(yīng)內(nèi)容:HTTP/1.1 200 OKTransfer-encoding: chunkedContent-type: application/soap+xml; charset=utf-8Date: Tue, 30 Dec 2014 07:39:51 GMT晴7.3.5 Soap1.1和soap1.2對(duì)比Soap1.1版本:通過http進(jìn)行post請(qǐng)求。Content-Type: text/xml; charset=utf-8Soap1.1命名空間:/soap/envelope/Soap1.2版本:Post請(qǐng)求Content-Type: application/soap+xml;soap1.2命名空間:/2003/05/soap-envelopesoap1.1的服務(wù)端需要soap11客戶端調(diào)用soap1.2的服務(wù)端soap1.1客戶端和soap1.2客戶端都 可以調(diào)用。8 Webservice客戶端開發(fā)方法總結(jié)8.1 使用客戶端生成代碼方法第一步:使用wsimport或其它工具(比如cxf的wsdl2java)生成客戶端的調(diào)用第二步:使用生成代碼調(diào)用webservice服務(wù)端使用生成的service服務(wù)視圖類創(chuàng)建服務(wù)視圖對(duì)象調(diào)用service服務(wù)對(duì)象的getPortXXX方法得到portType。/創(chuàng)建服務(wù)視圖對(duì)象WeatherInterfaceImplService weatherInterfaceImplService =new WeatherInterfaceImplService();/通過服務(wù)視圖得到portType(接口類型)WeatherInterfaceImpl weatherInterfaceImpl = weatherInterfaceImplService.getWeatherInterfaceImplPort();/調(diào)用webservice方法String result = weatherInterfaceImpl.queryWeather(鄭州);8.2 使用jaxws標(biāo)準(zhǔn)方法(Service類)(推薦使用)第一步:使用wsimport或其它工具(比如cxf的wsdl2java)生成客戶端的調(diào)用第二步:使用url、qname、service調(diào)用服務(wù)端/wsdl的路徑URL wsdlDocumentLocation = new URL(:54321/weather?wsdl);/從wsdl中找到服務(wù)視圖/第一個(gè)參數(shù):wsdl的命名空間/第二個(gè)參數(shù):服務(wù)視圖名稱QName serviceName = new QName(/, WeatherInterfaceImplService);/第一步使用Service創(chuàng)建服務(wù)視圖Service service =Service.create(wsdlDocumentLocation, serviceName);/從服務(wù)視圖得到portType對(duì)象/參數(shù):portTypeWeatherInterfaceImpl weatherInterfaceImpl = service.getPort(WeatherInterfaceImpl.class);8.3 模擬http客戶端調(diào)用webservice服務(wù)(掌握)使用HttpURLConnection或apache的Httpclient模擬http請(qǐng)求,調(diào)用webservice。注意:使用此方法不需要生成客戶端調(diào)用代碼。9 webservice案例(webservice發(fā)送xml)9.1 目標(biāo)企業(yè)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 惠州2025年法務(wù)專員招聘與法律咨詢及風(fēng)險(xiǎn)控制服務(wù)合同2篇
- 2025年度船舶船員聘用及船舶港口服務(wù)合同4篇
- 二零二五年度鋼材行業(yè)標(biāo)準(zhǔn)化體系建設(shè)合同3篇
- 2025年度體育場(chǎng)館運(yùn)營(yíng)管理承包合同4篇
- 2025年度美容化妝品展會(huì)參展與合作合同4篇
- 二零二五版窗簾安裝與室內(nèi)隱私保護(hù)合同3篇
- 2025年度美縫培訓(xùn)及咨詢服務(wù)合同范本4篇
- 2025年度外墻涂料工程承包與綠色建筑標(biāo)準(zhǔn)合同
- 2025年度礦產(chǎn)資源勘查開發(fā)合同范本4篇
- 二零二五年度影視基地租賃合同模板資訊解讀4篇
- GB/T 3953-2024電工圓銅線
- 糧油儲(chǔ)藏技術(shù)規(guī)范課件
- 人教版小學(xué)數(shù)學(xué)一年級(jí)上冊(cè)20以內(nèi)口算天天練試題全套
- 技術(shù)服務(wù)補(bǔ)充協(xié)議范本
- 促進(jìn)自然分娩資料課件
- 人際風(fēng)格的類型
- 醫(yī)院科室宣傳方案
- 藥物外滲和滲出的預(yù)防和處理
- 高壓變頻器培訓(xùn)教材
- 立式氣液分離器計(jì)算
- 發(fā)電機(jī)停電故障應(yīng)急預(yù)案
評(píng)論
0/150
提交評(píng)論