私は、Java で書かれた Web サービスを呼び出す C# クライアントを作成しています (別の人が作成しました)。クライアントに Web 参照を追加し、Web サービスのメソッドを正常に呼び出すことができました。
オブジェクトの配列を返すようにサービスが変更されましたが、クライアントは返された SOAP メッセージを適切に解析しません。
MyResponse[] MyFunc(string p)
class MyResponse
{
long id;
string reason;
}
生成された C# プロキシが (SoapHttpClientProtocol.Invoke を使用して) Web サービスを呼び出すとき、長さ 1 の MyResponse[] 配列、つまり単一の要素が必要です。Invoke 呼び出しの後に得られるのは、サービスが実際に返すものに関係なく、id=0 および reason=null の要素です。パケット スニファーを使用すると、サービスが、id と理由が null 以外の値に設定された正規の SOAP メッセージのように見えるものを返していることがわかります。
C# クライアントが someobject[] を返す Java Web サービスを呼び出せるようにするためのトリックはありますか? 必要に応じて、サニタイズされたデモの入手に取り組みます。
編集: これは、「Web 参照の追加...」による Web 参照です。VS 2005、.NET 3.0。