2014-07-14 197 views
0

我必須創建一個java客戶端來執行webservice。我有一個XML包含整個SOAP請求(Envelope,Header,Body)。Webservice客戶端調用webservice客戶端 - java

如何通過傳遞包含soap請求的xml文件來編寫執行webservice的java代碼?

我試着搜索了很多,但無法找到一個樣本,這是否

服務器上的Web服務是SOAP 1.1與內容類型「文本/ XML」

對於實例 wsdlLocation =」 http:// localhost:8080/helloservice/hello?wsdl「

webservice沒有輸入參數,這就是爲什麼數據必須作爲soap請求完全傳遞的原因。傳遞的數據是以xml的形式出現的。

樣品SOAP請求XML文件樣本(sample.xml中)

<?xml version="1.0" encoding="UTF-8"?> 
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> 
<env:Body> 
<putTxlife1203Info xmlns="http://www.openuri.org/"> 
<TXLife> 

</TXLife> 
</putTxlife1203Info> 
</env:Body> 
</env:Envelope> 

這將是非常巨大的,如果有人能提供樣品將是巨大的

+0

我假設有在進口的URL中的錯字或包括在WSDL中聲明。 –

回答

0

生成客戶端服務的方法和材料請使用wsimport工具如下:

wsimport -keep http://localhost:8080/helloservice/hello?wsdl 

來源:http://www.mkyong.com/webservices/jax-ws/jax-ws-hello-world-example/還有,如果你真的(我的意思是真的真的)都想用手完成,說明也在那裏。我寧願生成而不是創建的事情,讓我們保持簡單。

然後創建客戶端的東西,如:

package com.mkyong.client; 

import com.mkyong.ws.HelloWorld; 
import com.mkyong.ws.HelloWorldImplService; 

public class HelloWorldClient{ 

    public static void main(String[] args) { 

    HelloWorldImplService helloService = new HelloWorldImplService(); 
    HelloWorld hello = helloService.getHelloWorldImplPort(); 

    System.out.println(hello.getHelloWorldAsString("mkyong")); 

    } 

} 

這是從上面的鏈接直接引用,並且該方法的名稱可能取決於其教程中,您遵循服務器端的實際服務而異。

+0

wsimport附帶jdk。 – mico

+0

wsimport不起作用,因爲服務器wsdl不以命名空間 Sam

+0

開頭您是否檢查過瀏覽器中的wsdl url內容?在那裏看到一切嗎?看看http://stackoverflow.com/questions/3981873/generating-web-service-classes-using-soapui-with-a-wsdl-over-https如果wsdl似乎沒有問題.. – mico

3
import javax.xml.soap.*; 

public String callTestService(String soapRequestXml, String url) throws Exception { 
    // Create SOAP Connection 
    SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance(); 
    SOAPConnection soapConnection = soapConnectionFactory.createConnection(); 

    SOAPMessage soapRequest = MessageFactory.newInstance().createMessage(new MimeHeaders(), 
      new ByteArrayInputStream(soapRequestXml.getBytes())); 

    // Send SOAP Message to SOAP Server 
    SOAPMessage soapResponse = soapConnection.call(soapRequest, url); 

    ByteArrayOutputStream soapResponseBaos = new ByteArrayOutputStream(); 
    soapResponse.writeTo(soapResponseBaos); 
    String soapResponseXml = soapResponseBaos.toString(); 

    return soapResponseXml; 
}