1. 程式人生 > >(三)調用web服務

(三)調用web服務

第一個 技術 new res 調用服務 col static package 地址

  • (二)發布第一個WebService服務與DSWL文檔解析 講解了如何發布一個web服務,本章主要講述如何調用一個web服務。
    •   這裏有三種方式:
  1.  使用代理模式調用,需要將服務端的接口類拷貝到客戶端中。(不常用,因為不大可能拿到服務端的接口類。) 
  2. 通過客戶端樁的方式。

  3.  發送原始的soap消息。

一、使用代理模式

  • 需要將服務端的接口類拷貝到客戶端中。
  • 本例所調用的服務為(二)發布第一個WebService服務與DSWL文檔解析 這個章節所發布的web服務,也就是說需要把該服務的接口類拷貝到客戶端中。

技術分享

package test;

import
java.net.MalformedURLException; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.ws.Service; import service.WebService_1; /** * 使用代理模式 1.需要將服務端的接口類拷貝到客戶端中。 * * @author Administrator * */ public class Test { public static void main(String[] args) { try {
// wsdlDocumentLocation是所調用服務的wsdl地址 URL wsdlDocumentLocation = new URL("http://localhost:3031/first?wsdl"); // QName構造函數的第一個參數是所調用服務的wsdl的命名空間。第二個參數是所調用的服務名 QName serviceName = new QName("http://service/", "WebService_1_implService"); Service service = Service.create(wsdlDocumentLocation, serviceName);
//通過getport獲取到的是一個代理對象,而不是接口對象 WebService_1 webService_1 = service.getPort(WebService_1.class); int result = webService_1.add(25, 10); System.out.println("result===" + result); } catch (Exception e) { e.printStackTrace(); } } }

結果:

技術分享

二、客戶端樁

  • 通過wsdl地址或者wsdl文檔,生成客戶端的調用類,被稱為客戶端樁的方式。

  • 步驟:
    1.  使用eclipse/myeclipse工具來生成客戶端(內部調用jdk命令)(本例中使用)。
    2. 使用jdk命令來生成客戶端。
    3. 技術分享

      該圖為jdk命令,其中 -d表示存放客戶端代碼的目錄,http://localhost:4040/first?wsdl為要生成客戶端的wsdl文檔地址。

      該命令生效後,會生成目錄:

技術分享

  其中,客戶端代碼就在這個目錄下。

  • 案例:(使用工具生成客戶端)
    •   本例所調用的服務為(二)發布第一個WebService服務與DSWL文檔解析 這個章節所發布的web服務

  1.  生成客戶端。

技術分享

技術分享

技術分享

package test;

import java.rmi.RemoteException;

import service.WebService_1;
import service.WebService_1Proxy;

public class Test {
    public static void main(String[] args) throws RemoteException {
        WebService_1 weService_1 = new WebService_1Proxy().getWebService_1();
        int res = weService_1.add(20, 50);
        System.out.println("res=" + res);
    }
}

結果:

技術分享

三、發送原始的soap消息

(三)調用web服務