2015-10-06 40 views
0

我一直在搜索無處不在的如何使用Java中的C#/ ASP.NET構建的SOAP API。我目前正在爲我的項目使用Spring/Spring Web,並且我希望使用帶有Spring-WS的SOAP API來運行。在Java中使用SOAP API

信封是錯誤地生成,並且當我發送請求它只是指出 「500內部服務器錯誤」

在它具有SOAP-ENV頂部的名稱空間:信封是不正確的,並使用在WSDL時SoapUI的數據是以soap:Envelope的形式呈現的,所以我不確定這是否是編碼到XML字符串的問題。

我送這樣的:

TestRequest test = WS_CLIENT_FACTORY.createTestRequest(); 
    test.setData(1); 

    JAXBElement<TestRequest> req = WS_CLIENT_FACTORY.createTestRequest(test); 

    getWebServiceTemplate().marshalSendAndReceive(req); 

這發出了請求,但輸出,實際上是發送被錯誤地放在一起的XML數據和服務器似乎並不喜歡它。

我不確定C#/ ASP SOAP API服務器的處理方式與Java的方式不同嗎?如果有人能夠啓發我,請幫助我!

+1

SOAP是一個xml通信協議。 C#和Java都處理它一樣。最好的建議是可以給你的是驗證你對預期的模式所期望的響應。 – Reinard

+1

用於創建SOAP API的語言不應該對使用Java的消費產生影響。我建議你首先嚐試一下soapUI,看看它的行爲,然後比較你的代碼生成的請求與它的對比。 – yogidilip

回答

0

我回到使用基本的JAX-WS作爲Java的一部分,並使用「wsimport」工具。事實證明,我之前做過這件事的時候,它已經丟失了SOAP Headers,所以你可以使用下面的命令附帶的頭文件實際生成請求。

wsimport -keep -Xnocompile -XadditionalHeaders -extension 

雖然這不是使用Spring的消費SOAP API的實現,但它似乎工作得更好。