2012-05-08 3 views
1

webserviceを開発しています。これはサーバ上のjavaであり、クライアントではc#でなければなりません。 あり、パラメータのように、ただ1つの文字列があると、パラメータアウトとして、それは、この構造の "オブジェクト" を返します:C#webserviceクライアントがjavaサーバと連携していません

  • 文字列codError
  • 文字列descError
  • Object2に[] arrayData

次のような "Object2"となります。

  • 文字列firstDataArray
  • Int secondDataArray

私はJavaクライアントを作成しましたが、完璧に動作しますが、c#クライアントは動作しません。これは、オブジェクトの "EndElement"が期待されていなかったことを示します(オブジェクト2ではなくオブジェクトの終わりを意味します)。また、 "codError"要素が必要であると言います。

このメソッドは、1つのオブジェクトだけのオブジェクトの配列を返しません。

httpanalyzerを使用し、JavaクライアントからもC#クライアントの場合と同様に、サーバーはwell-formed xmlを返し、その包含は(両方のクライアントで)想定されているものです。

私はJava用にEclipseとAx2、Visual Studio 2005と2008用にはC#を使用しています。

何が間違っている可能性がありますか?

ありがとうございます!

+1

c#wsdlエンジンは、これらの微妙なバグにつながるwsdlファイルのJava解釈を理解していないかもしれません。よりシンプルなWebサービスを作成し、そこから展開して何がうまくいかないのか理解してください。おそらくC#のような単純な配列で、フィールドを期待しています。 – CodingBarfield

+0

WSDLの表記法: 'List 'を使う代わりに 'Object2 []'のような配列を使わないでください。 –

答えて

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> 

「object2は」タグがあってはならないこと、があります。 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です。

これは魅力的です。