2012-04-26 95 views
2

我使用jdk附帶的JAX-WS來創建soap客戶端。現在,服務提供商不公開wsdl。如果我知道提供的服務,如何在沒有wsdl的情況下創建soap客戶端?使用java而不使用WSDL的SOAP客戶端服務 - 如何?

編輯:我不得不使用任何SOAP API /工具,而不是僅限於JAX-WS的自由。

編輯2:這是當服務URL被命中時顯示的消息。 此服務的元數據發佈目前已停用。 並建議配置服務行爲配置。我知道這個服務是在.Net中完成的。但是,如何使用提供的服務行爲相關詳細信息訪問Java中的服務?

+1

您是否有示例請求XML?或者可能要求他們提供WSDL? – Pushkar 2012-04-26 09:35:17

+0

是的,我有請求和響應XML。 – Ram 2012-04-26 09:41:09

+0

所有你需要的是一個架構定義文件..或者你可以使用Eclipse創建wsdl .. http://wiki.eclipse.org/index.php/Introduction_to_the_WSDL_Editor – vinodn 2012-04-26 10:16:15

回答

0

您可以創建延伸javax.xml.ws.Service客戶服務提供商,然後覆蓋您目前手頭遠程服務的服務構造URL接受。

public class Foo extends Service 
{ 
    ... 

    public Foo(URL wsdlLocation) 
    { 
    super(wsdlLocation, SERVICE); 
    } 
} 

然後當構建提供者綁定時,您顯式地將URL傳遞給服務接口。

Foo service = new Foo(url); 
BindingProvider binding = (BindingProvider)service; 
+1

使用BindingProvider.ENDPOINT_ADDRESS_PROPERTY覆蓋端點。 – Ram 2012-05-03 06:27:37

+0

有關如何覆蓋BindingProvider.ENDPOINT_ADDRESS_PROPERTY,請參閱http://stackoverflow.com/a/8975619/2424205。 – rachekalmir 2014-06-20 08:01:08

1

您可以直接使用HttpClient的,但你必須手工代碼發送的每個XML消息,並解析收到的每條消息。您還可以手動創建與您的xml匹配的對象,並使用jaxb來編組/解組消息。

+0

有什麼例子嗎? – digz6666 2014-04-08 05:51:14

相關問題