2013-03-03 38 views
3

我需要在我正在構建的Java Web應用程序中調用一些Web服務方法。如何在Java中的WSDL URL上調用Web服務?

E.g每次用戶註冊時,我想通過Java調用WSDL URL上的newUser方法。我需要傳遞一些參數與請求。

是否有任何內置的Java類或任何可公開使用的類,它可以使這種簡單,即我只提供URL和參數,它執行請求並返回響應?

如果不是,在Java應用程序中調用WSDL上的Web服務的標準方式是什麼?

+0

您可以使用Apache Commons HTTP客戶端發出POST請求。 SOAP服務說HTTP。 – duffymo 2013-03-03 15:52:48

回答

10

上部署的WSDL URL運行wsimport的,你可以從你的JDK運行:

wsimport -p client -keep http://localhost:8080/calculator?wsdl 

這一步將生成和編譯一些類。注意 - 切換開關,您需要它來保留生成的Java源文件。

Calculator.java - 服務端點接口或SEI
CalculatorService的 - 生成的服務,對其進行實例化

public class MyClientServiceImpl { 
    public static void main(String args[]){ 

    @Override 
    public Integer add(int a , int b) { 
     CalculatorService service = new CalculatorService(); 
     Calculator calculatorProxy = service.getCalculatorPort();    
     /** 
     * Invoke the remote method 
     */ 
     int result = calculatorProxy.add(10, 20); 
     System.out.println("Sum of 10+20 = "+result); 
    } 
} 

如果您使用的是Java EE 6支持的容器,那麼你可以以這種方式使用它,

public class MyClientServiceImpl implements MyClientService { 

    @WebServiceRef(wsdlLocation = "http://localhost:8080/calculator?wsdl", 
value = CalculatorService.class) 
    private Calculator service; 

    @Override 
    public Integer add(int a , int b) { 
     return service.add(a,b); 
    } 
} 
+0

如何安裝/運行WSImport?我在Linux上。 – 2013-03-03 18:33:05

+1

在你的linux上運行$ which java,你需要從你的JDK目錄啓動它,在http://docs.oracle.com/javase/6/docs/technotes/tools/share/wsimport.html – 2013-03-03 18:42:16

+0

謝謝,它的工作現在。您能否刪除包含網址的評論?然後我會接受。 – 2013-03-04 18:58:28