2012-05-08 52 views
1

我正在開發一個web服務,它是服務器中的java,並且必須是客戶端中的c#。 只有一個字符串作爲參數和輸出參數它將返回一個 「對象」 具有這種結構:C#web服務客戶端不與一個java服務器工作

  • 字符串codError
  • 字符串descError
  • Object2的[] arrayData

「Object2」是這樣的:

  • String firstDataArray
  • 詮釋secondDataArray

我創建了一個Java客戶端,它完美的作品,但C#的客戶端無法正常工作。它表示該對象的「EndElement」不是預期的(意味着對象的末尾,而不是object2),並且期望它有一個「codError」元素。

該方法不返回對象數組,只是一個對象。

我使用httpanalyzer,並從java客戶端以及從c#客戶端,服務器回調一個格式良好的xml,其包含是它應該是(在這兩個客戶端)。

我使用eclipse和axis2 for java,visual studio 2005和2008 for c#。

什麼可能是錯的?

在此先感謝!

+1

c#wsdl引擎可能不理解導致這些細微錯誤的wsdl文件的java解釋。創建一個更簡單的Web服務並從中展開,以瞭解發生了什麼問題。它可能像c#一樣簡單,期待一個數組的字段。 – CodingBarfield

+0

WSDL表示法:不要使用像'Object2 []'這樣的數組,而應該使用'List '。 –

回答

0

問題是由axis和eclipse自動生成的WSDL是錯誤的,所以從服務器發送到客戶端的XML也是錯誤的。 我認爲這是自下而上創建web服務時常見的問題。自上而下創建它們要好得多。

服務器被髮送到客戶端的XML是類似(只是錯誤的部分):

<descError>OK</descError> 
<codError>0</codError> 
<object2> 
    <object2> 
     <firstDataArray>John</firstDataArray> 
     <secondDataArray>35</secondDataArray> 
    </object2> 
    <object2> 
     <firstDataArray>Andrew</firstDataArray> 
     <secondDataArray>76</secondDataArray> 
    </object2> 
    <object2> 
     <firstDataArray>Walter</firstDataArray> 
     <secondDataArray>23</secondDataArray> 
    </object2> 
</object2> 

有一個「對象2」的標籤出現,這不應該是。 它可以使用eclipse爲java創建一個客戶端,但它不在c#

我只是使用自頂向下的實現製作了相同的Web服務,現在它工作的很好!

對每個人都有很高的要求!

0

因爲元數據類型與java和C#都是不同的,所以,你不能通過java的數據類型到c#。

我建議你返回XML數據格式來使用。

0

(創建一個AXIS-Java-Server並且)用Java-Server的WSDL創建C#-Client。有一種工具可以在Visual Studio命令提示符下創建Java服務器的C#類,它的名稱爲SvcUtil.exe

這很像一個魅力。