2012-01-05 9 views
2

.NET Framework 4.0を実行しているC#で構築されたコンポーネントからjavaで書かれたサードパーティのWebサービスを呼び出そうとしています。 WSDLはhereです。C#でJava WebサービスからSOAP応答を非直列化する

私の問題は、C#プロキシクラスがGetProjectsメソッドからの応答を正しく非直列化しないということです。なぜなら、プロジェクトのクラスを生成するためですが、レスポンスにはプロジェクトへの要素マッピングが含まれていないため、 xsi:type属性で指定されたProjectを持つ "item"要素。

問題の私の調査から、プロジェクトノードが<item xsi:type="ns1:Project" xmlns="" xmlns:ns1="http://v3.soap.api.indextools.com">として戻ってきたが、プロキシが<Project>を期待しているので、逆シリアル化が失敗しているように見えます。

サービス参照を追加するときにプロキシが自動的に生成されるため、Webサービスを変更する機能がないため、この問題のプロキシクラスを正しく非直列化するための回避策が不思議です応答。この問題は、GetProjectsメソッドにのみ分離されていません。私はサービスの他の方法と同じ問題を抱えることが予想されるため、これを世界的に解決する方法が評価されます。

答えて

0

ProjectItemになると仮定すると、Java SOAP APIはすべてを基本型として返すのが一般的です。

var item = proxy.GetProjects(...); 
var project = item as Project; 

私が協力してくれたJava対応のSOAP APIには、これが必要です。これは<item>ではなく<Project>を期待するWCFを教えてください

[DataContract(Name="item")] 
public partial class Project { } 

+0

プロキシがメソッドを呼び出すときに彼がエラーになると私は信じています。プロキシの結果を解析しようとしているときではありません。 – Ernesto

2

はたぶんプロジェクトにシリアライズされていることを名前を変更してみてください。

Projectは生成された部分クラスなので、これを独自の.csファイルに入れる必要があります。

+0

+1素晴らしいソリューション、パーシャルの完全な使用。 – Craig

関連する問題