1

C# を使用して wsdl Web サービス (Java) を使用しようとしています。サービス参照を追加し、webmethod 呼び出しを実装しましたが、次のエラーが返されます: メッセージを逆シリアル化しようとしているときにフォーマッタが例外をスローしました:

パラメータhttp://services.company.companyname.com.br:methodNameResponseを逆シリアル化しようとしているときにエラーが発生しました。InnerException メッセージは、「行 1 位置 456 のエラーです。ネームスペース ' http://services.company.companyname.com.br ' からの 'EndElement' 'methodNameReturn' は想定されていません。要素「idSomething」が必要です。詳細については、InnerException を参照してください。

サイズの制限、ホストファイルへのIPの追加など、すでに多くのことを試しましたが、成功しませんでした。誰にもアイデアはありますか?

コードは次のとおりです。

var ws = new webService(); //invoked using the service reference
var return = ws.methodName("x", "CAY", "5454545", "XXXX", "xxx", "09/07", "A", 1,
                                               "23/04/2013", "23/04/2013", "15:00", "17:00");

ws.methodName はエラーを返します。

すでにリクエスト オブジェクトとレスポンス オブジェクトを試しましたが、同じエラーが発生しました。

Web参照を使用してまだテストしました。エラーを返さない方法を見つけましたが、呼び出されたメソッドの上にある次の行にコメントを付けて、参照ファイルを変更する必要がありました。

[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://dto.services.company.trielo.com.br")]

私はwsdlを投稿しています:http://177.140.208.200:8998/mdc4web/services/VisitantesSASweb?wsdl

4

2 に答える 2

3

Visual Studio によって生成されたプロキシ クラスとサービス WSDL の間に 2 つの問題があることがわかりました。

プロキシによって生成されたファイルを見る:

最初の間違いは、RetVisSRV クラスの XmlTypeAttribute 属性の名前空間パラメーターです。

[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://dto.services.mdc4web.trielo.com.br")]

「dto」を削除する必要があります。

[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://services.mdc4web.trielo.com.br")]

2点目は、「lst」配列宣言のXmlArrayItemAttributeでのelementNameパラメータです。

[System.Xml.Serialization.XmlArrayItemAttribute("item", Namespace="http://services.mdc4web.trielo.com.br", IsNullable=false)]

「lst」に修正

[System.Xml.Serialization.XmlArrayItemAttribute("lst", Namespace="http://services.mdc4web.trielo.com.br", IsNullable=false)]

これらの変更後、正常に動作するはずです。

この名前空間の問題は、AXIS クライアントと .NET クライアントの間の既知の問題ですが、まだ解決されていない理由はわかりません

https://issues.apache.org/jira/browse/AXIS-2449を参照してください。

お役に立てれば

于 2013-04-29T18:55:30.780 に答える