WebService學習,wsdl文件詳解

目錄

  • 第一章、起因
    • 1.1)學習原因
    • 1.2)提問的過程(逐步提出問題)
          • 1、?wsdl鏈接的含義,有什么作用?
          • 2、什么是wsdl文檔?
          • 3、如何閱讀wsdl文件?
          • 4、wsdl文件有什么作用?
          • 5、什么是Web服務?Web Service是什么
          • 6、如何使用wsdl文件生成Java代碼
          • 7、生成Java代碼包含哪些內容?有什么作用
          • 8、如何將生成的Java類集成到項目中,實現與Web服務的通信
          • 9、如何調用生成的Java類中的方法?
  • 第二章、學習過程(逐步解決問題過程)
    • 2.1)什么是WSDL
      • 2.1.1)WSDL鏈接的含義,有什么作用?
      • 2.1.2)什么是wsdl文檔?
      • 2.1.3)如何閱讀WSDL文檔?
    • 2.2)Web Service技術
      • 2.2.1)Web Service技術介紹
      • 2.2.2)通過wsdl文件生成客戶端代碼(Java代碼)
      • 2.2.3)生成Java代碼包含哪些內容?有什么作用
      • 2.2.4)生成的Java類集成到項目中并訪問Web服務
    • 2.3)如何調用生成的Java類中的方法?
  • 第三章、
    • 3.1)發送soap請求
    • 3.2)
    • 3.3)
  • 第四章、
    • 4.1)
    • 4.2)
    • 4.3)備注Axis 1.4依賴的jar包

友情提醒:

先看文章目錄,大致了解文章知識點結構,點擊文章目錄可直接跳轉到文章指定位置。

第一章、起因

1.1)學習原因

起因
領導啥也沒說,直接給了個wsdl地址,類似于下面這種后面拼個?wsdl:

http://127.0.0.1:8080/xxxx/hello?wsdl

1.2)提問的過程(逐步提出問題)

每個問題的詳細答案都在后面的文章中

1、?wsdl鏈接的含義,有什么作用?

簡單回答:返回WSDL描述文檔

2、什么是wsdl文檔?

簡單回答:一個xml格式的描述文檔,可以被用來生成客戶端代碼(Java代碼),以便與Web服務進行通信。

3、如何閱讀wsdl文件?

簡單回答:從下往上閱讀

4、wsdl文件有什么作用?

簡單回答:描述web服務,生產Java代碼

5、什么是Web服務?Web Service是什么

簡單回答:Web Service部署完后可以通過URL訪問Web服務

6、如何使用wsdl文件生成Java代碼

簡單回答:使用wsim命令

7、生成Java代碼包含哪些內容?有什么作用

簡單回答:在本地通過這些Java代碼(客戶端代碼)訪問調用遠程Web服務中的方法

8、如何將生成的Java類集成到項目中,實現與Web服務的通信

簡單回答:將生成的客戶端代碼復制到項目中,添加客戶端代碼需要的依賴包,編寫代碼調用服務。

9、如何調用生成的Java類中的方法?

第二章、學習過程(逐步解決問題過程)

2.1)什么是WSDL

2.1.1)WSDL鏈接的含義,有什么作用?

剛看到的時候比較懵,先嘗試訪問了一下這個鏈接http://127.0.0.1:8080/xxxx/hello?wsdl,返回了一個WSDL文件,文件內容為XML格式:
在這里插入圖片描述

2.1.2)什么是wsdl文檔?

WSDL是XML格式的文檔,有以下作用:

①標準化描述web服務
WSDL是用XML的語言來標準化描述Web服務的描述語言(Web Services Description Language的縮寫),文件內容為xml格式,以.wsdl結尾。用于描述如何訪問特定的Web服務以及如何與其進行交互。包括web服務的具體功能接口(調用方式、輸入參數、輸出參數以及相關的消息格式)。

②發現可用的Web服務
描述Web服務的端點(endpoint)即客戶端可以訪問的服務位置,以及使用的通信協議和綁定信息。(可以將端口視為Web服務的端點)。

③定義通信協議和消息格式
描述客戶端和服務端之間交換的消息的結構和格式,以便雙方能夠理解和解析這些消息。對于分布式系統和跨平臺集成非常重要。

④生成客戶端代碼(Java代碼)
WSDL文檔可以用來生成客戶端代碼(Java代碼),以便與Web服務進行通信。

2.1.3)如何閱讀WSDL文檔?

WSDL文檔元素閱讀順序如下:從文檔最下放找到service節點然后按如下的順序往上看

元素介紹:1、服務(service)節點:定義了Web服務的具體網絡地址(Endpoint),也就是服務的URL。service標簽包含了服務端端口(port)屬性對應2、服務端口(port)節點:通常包含Binding屬性:將抽象操作映射到具體的通信協議和消息格式,例如SOAP協議。通過Binding屬性找到binding節點3、綁定(Binding):binding節點中包含具體的綁定信息,含有type屬性。通過type屬性找到相關聯的端口節點(portType)4、端口類型(PortType)節點:可以理解為一個類,一個接口。PortType里定義包含了多個操作(operation )節點5、操作(operation)節點: 相當于該類里有一個方法,name就是方法名稱。operation 包含了input節點,output節點,和fault節點(不常用)6、輸入輸出(Input和output)節點:input節點對應了Web服務的輸入消息即參數的定義。output節點對應了Web服務輸出消息即返回值的定義。他們有個屬性叫做message,通過message屬性找到對應message節點。7、消息(message)節點:描述了消息的組成部分,即消息的參數和類型。一個消息包含多個part節點可以傳遞一個或者多個參數。8、消息組成(part)節點:part是消息的組成部分,多個part組成一個消息。part包含屬性element對應(element)節點。9、元素(element)節點:定義了數據的類型。通過name屬性定義參數的名稱,通過type屬性定義參數的類型。

2.2)Web Service技術

2.2.1)Web Service技術介紹

Web Service是什么
是一項技術,能使得運行在不同機器上的不同應用無須借助第三方軟件或硬件, 就可相互交換數據或集成。依據Web Service規范實施的應用之間, 無論它們所使用的語言、 平臺或內部協議是什么, 都可以相互交換數據。
Web Service如何部署:
Web Service的部署通常需要遵循以下步驟:

①構建Web Service:編寫符合標準和規范的Web Service代碼,比如Java代碼

②打包Web Service:將Web Service打包成WAR文件或EAR文件。

③部署到Web容器:將打包好的Web Service部署到目標Web容器中(比如tomcat服務器,用于托管和運行Web應用程序的服務器環境,處理HTTP請求、執行Servlet和JSP等Web組件)

④驗證部署:通過相應的URL進行訪問Web服務,確保Web Service已經成功部署到Web容器。

2.2.2)通過wsdl文件生成客戶端代碼(Java代碼)

只要安裝了JDK1.6以上版本就可以通過wsimport命令使WSDL文件生成Java代碼(客戶端代碼)以便客戶端可以訪問已發布的Web服務。wsimport命令是來自JAX-WS,它是JDK 1.6及以上版本的一部分。
示例:

wsimport -s D:\workspace\src -p main.java.com.tools -keep http://localhost:8080/HelloWorld?wsdl

-s選項:指定生成的Java源文件的絕對路徑,一般都是src結尾
-p選項:指定生成的Java代碼文件的目錄(生成代碼所在包名,也就是項目中src后面的目錄)
-keep選項:表示保留生成的Java源文件在指定的輸出目錄中,而不會將其刪除。
URL地址:是WSDL文件的地址。

2.2.3)生成Java代碼包含哪些內容?有什么作用

這些Java代碼包括用于調用服務的框架和類。這些生成的類將充當客戶端與服務端進行通信的接口。可以用于創建客戶端,在Java應用程序中調用遠程Web服務的方法,并處理返回的數據。
生成的Java代碼通常包括以下內容:

Service接口文件:包含了Web服務的方法定義和參數信息。通常以Service結尾,比如HelloWorldService.java。代表Web服務接口的Java接口
代表Web服務數據類型的Java類
代表Web服務方法的Java方法

如圖:
在這里插入圖片描述

這些類和方法是根據wsdl文件中定義的服務、端點、操作和消息結構生成的,生成的Java代碼中包含了與SOAP協議相關的類和方法,可以幫助你構建符合SOAP協議要求的消息,并將這些消息發送到遠程服務端點。因此可以直接與遠程服務進行交互,調用遠程服務提供的操作,并獲取相應的響應數據。

2.2.4)生成的Java類集成到項目中并訪問Web服務

①將生成的Java類文件復制到項目的源代碼目錄中,通常是src/main/java/xxx/xx

②如果生成的Java類使用了其他依賴項。需要通過構建工具(如Maven或Gradle)的配置文件(例如pom.xml或build.gradle)來添加依賴。

③如果生成的Java類是用于與Web服務進行通信的客戶端代碼,需要編寫代碼來調用這些類,以實現與Web服務的交互。這可能涉及創建客戶端實例、調用Web服務的方法等操作。

import com.example.weather.Weather; // 導入生成的Java類public class WeatherClient {public static void main(String[] args) {// 創建Web服務客戶端實例Weather weatherService = new Weather();// 調用Web服務的方法String result = weatherService.getWeather("New York");// 處理返回結果System.out.println("Weather in New York: " + result);}
}

2.3)如何調用生成的Java類中的方法?

第三章、

3.1)發送soap請求

使用wsdl文件生成Java代碼后,通常需要發送SOAP請求。SOAP請求是一種基于XML的消息協議,用于在分布式應用程序之間進行通信。在生成的Java代碼中,通常會包含與SOAP請求相關的類和方法,以便你可以使用這些類和方法來構建和發送SOAP請求到特定的Web服務端點。SOAP請求通常包括對應的操作、輸入參數和其他必要的信息,以便與Web服務進行交互。
使用wsdl文件生成Java代碼后,怎么發送soap請求

回答

使用wsdl文件生成Java代碼后,你可以使用生成的Java類和方法來構建和發送SOAP請求。通常,你需要執行以下步驟:

創建一個SOAP消息:使用生成的Java類中的方法,創建一個符合要求的SOAP消息。

指定SOAP服務端點:設置SOAP消息的目標地址,即SOAP服務的端點地址。

發送SOAP請求:使用生成的Java類中的方法,將構建好的SOAP消息發送到指定的SOAP服務端點。

以下是一個簡單的示例代碼,演示如何使用生成的Java類發送SOAP請求:

// 創建一個實例
YourGeneratedService service = new YourGeneratedService();
YourGeneratedPortType port = service.getYourGeneratedPort();// 創建一個SOAP消息
YourRequestType request = new YourRequestType();
// 設置請求參數
request.setParam1("value1");
request.setParam2("value2");// 發送SOAP請求并獲取響應
YourResponseType response = port.yourOperation(request);

在這個示例中,YourGeneratedService和YourGeneratedPortType是根據wsdl文件生成的Java類,YourRequestType和YourResponseType是根據wsdl文件中定義的消息結構生成的Java類。yourOperation是根據wsdl文件中定義的操作生成的Java方法,用于發送SOAP請求并獲取響應。

3.2)

3.3)

第四章、

4.1)

4.2)

4.3)備注Axis 1.4依賴的jar包

Axis 1.4依賴的jar包,wsdl4j的包應該使用1.6.2

<!-- axis 1.4 jar start --><dependency><groupId>org.apache.axis</groupId><artifactId>axis</artifactId><version>1.4</version></dependency><dependency><groupId>commons-discovery</groupId><artifactId>commons-discovery</artifactId><version>0.2</version><exclusions><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.apache.axis</groupId><artifactId>axis-jaxrpc</artifactId><version>1.4</version></dependency><dependency><groupId>org.apache.axis</groupId><artifactId>axis-saaj</artifactId><version>1.4</version></dependency><dependency><groupId>wsdl4j</groupId><artifactId>wsdl4j</artifactId><version>1.6.2</version></dependency><!-- axis 1.4 jar end -->

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/697321.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/697321.shtml
英文地址,請注明出處:http://en.pswp.cn/news/697321.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于springboot+vue的智慧社區系統(前后端分離)

博主主頁&#xff1a;貓頭鷹源碼 博主簡介&#xff1a;Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰&#xff0c;歡迎高校老師\講師\同行交流合作 ?主要內容&#xff1a;畢業設計(Javaweb項目|小程序|Pyt…

每周編輯精選|MathPile 數學推理語料庫開源、協和眼科牽頭用 AI 助力 13 種眼底疾病檢測

近日&#xff0c;上海交通大學生成式人工智能研究實驗室 (GAIR)&#xff0c;開源了專為數學領域量身定制的高質量且多樣化的預訓練數據集 MathPile&#xff0c;及其可商用版本 MathPile-Commercial&#xff0c;現在在 hyper.ai 官網可以下載啦&#xff01;還有更多如 MathVista…

(十四)【Jmeter】線程(Threads(Users))之開放模型線程組(Open Model Thread Group)

簡述 操作路徑如下: 開放模型線程組(Open Model Thread Group) 是 JMeter 5.5 版本中引入的一個新特性,它允許用戶創建具有可變負載的負載配置文件。相較于傳統的線程組,開放模型線程組提供了更多的靈活性和動態調整的能力。 優點: 靈活性:允許測試人員根據測試需求動…

python 提取PDF文字

使用pdfplumber&#xff0c;不能提取掃描的pdf和插入的圖片。 import pdfplumberfile_path rD:\UserData\admindesktop\官方文檔\1903_Mesh-Models-Overview_FINAL.pdf with pdfplumber.open(file_path) as pdf:page pdf.pages[0]print(page.extract_text()) # 所以文字prin…

Verilog刷題筆記33

題目&#xff1a; You are given a four-bit input vector in[3:0]. We want to know some relationships between each bit and its neighbour: out_both: Each bit of this output vector should indicate whether both the corresponding input bit and its neighbour to t…

Kafka3.x進階

來源&#xff1a;B站 目錄 Kafka生產者生產經驗——生產者如何提高吞吐量生產經驗——數據可靠性生產經驗——數據去重數據傳遞語義冪等性生產者事務 生產經驗——數據有序生產經驗——數據亂序 Kafka BrokerKafka Broker 工作流程Zookeeper 存儲的 Kafka 信息Kafka Broker 總…

戲曲文化苑|戲曲文化苑小程序|基于微信小程序的戲曲文化苑系統設計與實現(源碼+數據庫+文檔)

戲曲文化苑小程序目錄 目錄 基于微信小程序的戲曲文化苑系統設計與實現 一、前言 二、系統功能設計 三、系統實現 1、微信小程序前臺 2、管理員后臺 &#xff08;1&#xff09;戲曲管理 &#xff08;2&#xff09;公告信息管理 &#xff08;3&#xff09;公告類型管理…

PostgreSQL 的實體化視圖介紹

PostgreSQL 實體化視圖提供一個強大的機制&#xff0c;通過預先計算并將查詢結果集存儲為物理表來提高查詢性能。本教程將使用 DVD Rental Database 數據庫作為演示例子&#xff0c;指導你在 PostgreSQL中創建實體化視圖。 了解實體化視圖 實體化視圖是查詢結果集的快照&…

docker安裝PostGIS擴展

去docker倉庫查找你想要安裝的鏡像版本&#xff0c;并pull下來 我下載的版本&#xff1a; [rootlocalhost ~]# docker pull postgis/postgis:12-3.2運行容器 [rootlocalhost ~]# docker run --name postgis --privilegedtrue --restartalways -e POSTGRES_USER12345678 -e P…

【高德地圖】Android高德地圖初始化定位并顯示小藍點

&#x1f4d6;第3章 初始化定位并顯示小藍點 ?第1步&#xff1a;配置AndroidManifest.xml?第2步&#xff1a;設置定位藍點?第3步&#xff1a;初始化定位?完整代碼 ?第1步&#xff1a;配置AndroidManifest.xml 在application標簽下聲明Service組件 <service android:n…

FPS游戲之漫談截幀技術

什么是截幀技術 簡而言之就是截取當前屏幕的內容&#xff0c;然后一般是以圖片的形式存入本地 為什么需要這個技術 因為有需求 比如我們需要把我牛逼的戰績炫耀下&#xff0c;是不是以圖文的形式分享到朋友圈是不是最直觀&#xff1f;&#xff1f;&#xff1f; 在Unity引擎中…

Aigtek高壓放大器是什么東西做的

在許多電子應用中&#xff0c;需要將低電壓信號放大到較高電壓以滿足特定的需求。為了實現這個目標&#xff0c;高壓放大器被廣泛采用。高壓放大器是一種專用電子設備&#xff0c;使用特定的電路和器件來增益輸入信號的電壓。它通常由以下幾個主要組成部分構成。 電源供應 高壓…

Linux編譯器---gcc/g++使用詳解

目錄 前言 gcc/g介紹 gcc/g的編譯指令&#xff08;以gcc為例&#xff09; ?編輯 gcc選項 預處理(進行宏替換) 編譯&#xff08;生成匯編&#xff09; 匯編&#xff08;生成機器可識別代碼&#xff09; 鏈接&#xff08;生成可執行文件或庫文件&#xff09; 函數庫 概念 …

網絡金融治理模式下第三方支付風險與應對路徑

隨著經濟社會的高速發展&#xff0c;消費模式日益多樣化&#xff0c;其中&#xff0c;第三方支付作為一種便捷的消費支付模式&#xff0c;在順應時代發展潮流中應運而生。這種支付模式通過中國人民銀行批準&#xff0c;持有《支付業務許可證》&#xff0c;并與銀行簽約&#xf…

訓練yolov8+SAM的過程記錄

1-首先將拿到的數據集進行重新命名(dataset1:是經過校色之后裁剪的圖片;dataset2:原圖) 圖片文件從1.jpg開始命名的代碼: folder_path = rC:\Users\23608\Desktop\Luli_work\data\fanStudent\tongueseg\Fan\Fan\.jpg new_folder = rC:\Users\23608\Desktop\Luli_work\da…

stable diffusion官方版本復現

踩了一些坑&#xff0c;來記錄下 環境 CentOS Linux release 7.5.1804 (Core) 服務器RTX 3090 復現流程 按照Stable Diffusion的readme下載模型權重、我下載的是stable-diffusion-v1-4 版本的 1 因為服務器沒法上huggingface&#xff0c;所以得把權重下載到本地&#xff…

初識表及什么是數據表

一、了解表 1.1.概述 表是處理數據和建立關系型數據庫及應用程序的基本單元&#xff0c;是構成數據庫的基本元素之一&#xff0c;是數據庫中數據組織并儲存的單元&#xff0c;所有的數據都能以表格的形式組織&#xff0c;目的是可讀性強。 1.2.表結構簡述 一個表中包括行和列…

當項目經理的一定要考PMP嘛?

PMP資格認證并不是強制性要求&#xff0c;但強烈建議考慮獲取該資格&#xff01;首先讓我們來了解一下PMP是什么&#xff0c;然后再談談為什么建議考取PMP資格的理由。 PMP&#xff08;Project Management Professional&#xff09;是項目管理專業人員的資格認證。該認證由全球…

SCI一區 | Matlab實現GAF-PCNN-MSA格拉姆角場和雙通道PCNN融合注意力機制的多特征分類預測

SCI一區 | Matlab實現GAF-PCNN-MSA格拉姆角場和雙通道PCNN融合注意力機制的多特征分類預測 目錄 SCI一區 | Matlab實現GAF-PCNN-MSA格拉姆角場和雙通道PCNN融合注意力機制的多特征分類預測效果一覽基本介紹模型描述程序設計參考資料 效果一覽 基本介紹 1.【SCI一區級】Matlab實…

老子云3D資源服務與應用平臺詳解

老子云平臺定位 老子云目標客群 老子云平臺架構 老子云平臺價值 核心優勢 -AMRT標準格式 -自動模型輕量化 -持續精進的底層技術算法 -千萬級輕量化3D資源素材市場 功能服務 -格式轉換 -蒙皮動畫輕量化 -傾斜攝影輕量化 -效果編輯器 -應用編輯器 -3D OFD應用 -A3D PPT -3D資源…