我需要在我正在構建的Java Web應用程序中調用一些Web服務方法。如何在Java中的WSDL URL上調用Web服務?
E.g每次用戶註冊時,我想通過Java調用WSDL URL上的newUser
方法。我需要傳遞一些參數與請求。
是否有任何內置的Java類或任何可公開使用的類,它可以使這種簡單,即我只提供URL和參數,它執行請求並返回響應?
如果不是,在Java應用程序中調用WSDL上的Web服務的標準方式是什麼?
我需要在我正在構建的Java Web應用程序中調用一些Web服務方法。如何在Java中的WSDL URL上調用Web服務?
E.g每次用戶註冊時,我想通過Java調用WSDL URL上的newUser
方法。我需要傳遞一些參數與請求。
是否有任何內置的Java類或任何可公開使用的類,它可以使這種簡單,即我只提供URL和參數,它執行請求並返回響應?
如果不是,在Java應用程序中調用WSDL上的Web服務的標準方式是什麼?
上部署的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);
}
}
如何安裝/運行WSImport?我在Linux上。 – 2013-03-03 18:33:05
在你的linux上運行$ which java,你需要從你的JDK目錄啓動它,在http://docs.oracle.com/javase/6/docs/technotes/tools/share/wsimport.html – 2013-03-03 18:42:16
謝謝,它的工作現在。您能否刪除包含網址的評論?然後我會接受。 – 2013-03-04 18:58:28
您可以使用Apache Commons HTTP客戶端發出POST請求。 SOAP服務說HTTP。 – duffymo 2013-03-03 15:52:48