2 基於soap訊息的呼叫

2021-09-02 09:29:44 字數 2296 閱讀 7781

上一節講述了webservice的發布,本節說明一下基於soap訊息的呼叫實現細節,按順序先後

1、建立要訪問的ws服務物件

url endpointurl = new url("http://localhost:8889/ms?wsdl");//訪問的url

//qname的第一引數是targetnamespace,第二個是name

qname qname= new qname("","myserviceimplservice");

//建立遠端服務訪問物件

service service = service.create(endpointurl, qname);

2、建立訊息**器

//基於訊息的方式,因此,後兩個引數是soapmessage.class, service.mode.message,第乙個引數是要訪問的那個服務port的name

dispatchdispatch = service.createdispatch(new qname("","myserviceimplport")/*一定要加上命名空間,否則出錯*/,

soapmessage.class, service.mode.message);

3、組建要**的請求

也就是你要訪問那個方法,就組裝那個方法的請求(引數),封裝到soap訊息中

soapmessage message = messagefactory.newinstance().createmessage();//建立訊息物件,用於獲取信封物件

//獲取body

//指定具體訪問那個方法

qname method = new qname("","adduser","tt");//訪問的方法

soapelement bodyelement = body.addbodyelement(method);

//父元素寫了namespace,子元素就不用寫了,namespace具有繼承性

soapelement user = bodyelement.addchildelement("user");//建立元素,然後新增呼叫方法的引數內容

user.addchildelement("id").setvalue("12");

user.addchildelement("nickname").setvalue("tudou123");

user.addchildelement("password").setvalue("123123");

user.addchildelement("username").setvalue("***");

需要說明的是soapmessage的是用方法,下面內容是jdk文件中的描述

所有 soap 訊息的根類。因為 soap 訊息是通過「導線」傳輸的,所以它是 xml 文件或第乙個正文部分為 xml/soap 文件的 mime 訊息。

預設情況下,新的 soapmessage 物件包含以下物件:

乙個 soapenvelope 物件

乙個 soapbody 物件

乙個 soapheader 物件

soapenvelope se = sp.getenvelope();

soapbody sb = se.getbody();

soapheader sh = se.getheader();

與 soap 訊息的其餘部分不同,附件不需要是 xml 格式,因此可以是簡單文字或影象檔案等任何形式。因此,任何非 xml 格式的訊息內容必須在 attachmentpart 物件中。

messagefactory 物件可以建立行為特定於具體 saaj 實現或應用程式的 soapmessage 物件。例如,messagefactory 物件可以生成符合特定配置檔案(如 ebxml)的 soapmessage 物件。在這種情況下,messagefactory 物件可以生成使用 ebxml 頭初始化的 soapmessage 物件。

4、第3步組裝了訊息,這裡就需要將訊息**給webservice的提供者,並獲取響應

soapmessage response = dispatch.invoke(message);
很簡單,只有一條語句,我們看看返回的內容:

//將結果列印出來

response.writeto(system.out);

12

tudou123

123123

***

這樣,就獲取了資料,解析出物件即可。

5、附件(是對應的wsdl檔案)

使用Soap訊息呼叫Web Services

1.soap定義 soap object access protocol 簡單物件訪問協議是在分散或分布式的環境中交換資訊的簡單的協議,是乙個基於xml的協議 它包括四個部分 soap封裝 envelop 封裝定義了乙個描述訊息中的內容是什麼,是誰傳送的,誰應當接受並處理它以及如何處理它們的框架 s...

基於apache的soap介面分布呼叫

使用perl中的soap介面完成分布呼叫,需要apache正常配置啟動 use soap lite use soap lite trace all 開啟追蹤排查日誌 my s soap lite uri network 定義呼叫方法 proxy http呼叫cgi程式 network test 20...

SOAP訊息的結構

介紹soap報文的結構,以及獲取的方式。在前面講述過使用eclipse的工具web services explorer傳送請求。在actions中填寫請求引數,然後點選go傳送請求。其實傳送出去的是對應的soap訊息 點選source鏈結,可以看到乙個預設的soap訊息框架 注 為了突出重點,做了適...