WebService教程詳解(二)。本站提示廣大學習愛好者:(WebService教程詳解(二))文章只能為提供參考,不一定能成為您想要的結果。以下是WebService教程詳解(二)正文
在上篇文章給年夜家引見了WebService教程詳解(一)
應用對象的緣由:
1、 應用對象可以更好的懂得WebService要求的進程
2、 應用對象WsExplore可以獲得SOAP數據發送和吸收的格局
3、 應用對象Tcp/Ip Monitor可以監控攔阻器要求頭和呼應頭的詳細數據
甚麼是SOAP?
SOAP是一種基於XML編碼標准的文本協定,簡略的說SOAP就是在HTTP的基本上傳輸XML數據,以完成長途挪用【不管你的辦事端是甚麼說話書寫的,只需吸收SOAP協定的XML數據,並前往SOAP協定的XML數據,便可以被任何說話挪用】
應用WsExplorer實例:驗證qq能否在線
采取qqOnlineWebServiceSoap中的qqCheckOnLine驗證時,前往的是
qqCheckOnlineResponse
qqCheckOnlineResult (string): N
點擊source可以看到具體信息,信息以下:
1:這是收回的新聞格局:
http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://WebXml.com.cn/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-
-
870931520
2:以下是吸收到的XML格局
http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-
- http://WebXml.com.cn/">
N
采取qqOnlineWebServiceHttpGet或qqOnlineWebServiceHttpPost中的qqCheckOnline驗證時,前往的都是
Nhttp://WebXml.com.cn/">N>
應用Tcp/Ip Monitor
TCP/IP Monitor不只可以看到SOAP數據,還可以獲得HTTP要求和吸收的頭信息。
1、地位:此對象位於:window>show view>other>MyEclipse Common(經常使用對象)>TCP/IP Monitor
2、此對象,相當於一個署理商,啟動後它將監聽當地的某個端口,然後再將要求轉發給指定的目的IP和端口。
獲得到數據後,再將數據原封不動的前往給客戶。在客戶看來,永久起首拜訪的都應當是這個署理,不然我們將看不到數據傳輸的進程。
3、 設置裝備擺設選項:
在翻開的TCP/IP Monitor界面上:view Menu(右上偏向下的小箭頭)>Properties>Add(右邊添加)
設置成以部屬性:
第一步:
1)local monitoring port(監聽當地的端標語):9876,隨便設置一個4位的端標語,一會將經由過程http://127.0.0.1:9876的情勢拜訪
2)host name(要監聽的辦事器,如www.jb51.net):127.0.0.1 –由於本機宣布了一個WebService所以監聽本機IP.也能夠是隨意率性的主機。
3)Port(要監聽的目的辦事器的端口):6666 - 由於我們宣布的WebService為http://127.0.0.1:6666/helloworld所以,6666是須要監聽的端標語。
4)Type(監聽的類型):
-- TCP/IP : 將應用原始地址持續拜訪下一個要求,如用戶輸出:http://127.0.0.1:9876/helloworld?wsdl此時將前往wsdl辦事拜訪地址同前。
-- HTTP :將應用目的地址持續拜訪下一個要求。如用戶輸出: http://127.0.0.1:9876/helloworld?wsdl在要求辦法時將應用http://127.0.0.1:6666/helloworld來拜訪sayHi辦法。此種方法將不再會被署理。由於曾經不是正在監聽的端標語了。
在監聽類型處,我選擇了TCP/IP,然後經由過程在地址欄輸出:http://127.0.0.1:9876/helloworld?wsdl,在前往的wsdl文件中檢查:處地址的變更情形。
time out:設置拜訪不勝利的銜接時光,堅持為0,即不設置。
在設置好後,點OK按扭,然後再點右方的Start按扭,監聽便曾經啟動。
第二步:
在MyEclipse的WebService上設置裝備擺設WSDL URL為:http://127.0.0.1:9876/helloworld?wsdl,留意應用的是MyEclipse TCP/IP Monitor的端口。而不是直接去拜訪我們宣布的http://127.0.0.1:6666/helloworld?wsdl
若何修正wsdl文件的內容?
應用WebService的注解。
1、 @WebService-界說辦事
2、 @WebMethod-界說辦法
3、 @WebResult-界說前往值
4、@WebParam-界說參數
留意:關於注解,分歧的版本支撐水平不雷同:
1、1.5不支撐.
2、1.6.0_20前版本必需應用完全注解.
3、1.6.0_21今後可以只應用@WebService對類停止注解.
正文的感化:
經由過程WebService的注解,可以加倍形像的描寫Web辦事。從而生成WSDL文檔。
當修正了WebService注解以後,同時會影響客戶端生成的代碼。
挪用的辦法名和參數名也產生了變更。
示例:
@WebService(name="myName",//對應portType name="myName" portName="myPort", //對應辦事中的port name="myPort" serviceName="myService",//對應service name="myService" targetNamespace="http://leaf.com/mynamespace")//可以隨便書寫相似於java中的package public class HelloWorld{ private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @WebMethod(action="myAction",//界說一個soapAction="myAction"用於找到這個辦法以履行 operationName="myOperationName")//界說可以挪用的辦法,會生成響應類的詳細辦法,operation name=".." public @WebResult(name="mySayHelloResult")String//界說前往值的稱號 sayHello(){ return "HelloWorld"; } @WebMethod(action="mySayHiAction",operationName="mySayHiOperationName") public @WebResult(name="mySayHiResult")String sayHi(@WebParam(name="myParaName", //將參數放到頭信息中,用於掩護參數,默許在body中 header=true, mode=Mode.IN) String name){ String str = "你好:"+name+",以後時光是:"+sdf.format(new Date()); return str; } public static void main(String[] args) { Endpoint.publish("http://127.0.0.1:6666/helloworld",new HelloWorld()); } }
3:將下面的法式對外宣布今後,我們經由過程MyEclipse的WebService Explorer來拜訪
你會發明和之前紛歧樣的提醒信息,但其實,依然照樣挪用的那統一個辦法。
4:再次應用wsimport –s . http://127.0.0.1:6666/helloworld?wsdl生成java代碼然後挪用
以下是挪用代碼(可以用面貌全非來描述,但完成的照樣異樣的任務。)
package com.leaf.mynamespace; public class Main { public static void main(String[] args) { //經由過程剖析wsdl可知從myService中挪用getMyPort前往myName MyName myName = new MyService().getMyPort(); //經由過程myName的mySayHiOperationName來挪用sayHi辦法 String str = myName.mySayHiOperationName("王健"); System.err.println(str); } }
關於WebService教程詳解(二) 就先給年夜家引見到這裡,願望對年夜家有所贊助!