2011-07-28 31 views
-1

私はVB.netでクライアントをビルドして、パートナー組織からwebservicesメソッドを呼び出します。VB.net SOAP Webサービスクライアント「アンマーシャリングエラー:予期しない要素...」

Visual Studio 2010のWeb References機能(WSDLからクラスにメソッドを変換しようとしたとき)を使用しても機能しないため、http://msdn.microsoft.com/en-us/library/system.web.services.protocols.soaphttpclientprotocol%28v=VS.71%29.aspxのガイドラインに従っています。

プロキシクラスを作成しましたが、そのクラスのオブジェクトをインスタンス化できます。しかし

、私はこのエラーを取得する引数を必要とするメソッドを呼び出そう:

Unmarshalling Error: unexpected element (uri:"http://api.service.apimember.emailvision.com/", local:"key"). Expected elements are <{}key>,<{}login>,<{}pwd> 

誰もこれがあるかもしれない理由を任意のアイデアを持っていますか? (役に立つとすれば、コードとWSDLの場所を投稿できます)

(PS私は、ZF Soapクラスを使用してPHPでうまく動作することができますが、それを動作させるためにはさまざまな理由から私は、Wiresharkを使用して発信SOAPメッセージを調べて、SoapUI経由で送信されたメッセージと比較しました.SapapUIを使用して送信されたメッセージはすべて正常に動作します。

私のVBクライアントは、アクセスしようとしているWebサービスの名前空間がsoap:envelope属性ではなく、メソッドの属性として宣言されているというメッセージを送信しています。ここで

は一例です:(SOAPUI製)

WORKS:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:api="http://api.service.apimember.emailvision.com/"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <api:openApiConnection> 

は(私のVB.netコードによって生成された)動作しません。

<?xml version="1.0" encoding="utf-8"?> 
<soap:envelope 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<soap:body> 
<openApiConnection xmlns="http://api.service.apimember.emailvision.com/"> 

私は思いますエンベロープ要素にxmlns 'api'を宣言する必要があるので、VB.netコードでこれを行う方法を理解する必要があります。

+0

"不十分に調査されている、不明確である、または役に立たない"という理由について、私にフィードバックを与えることなく質問を投票するだけの厳しいものですか? – cjashwell

+0

"Visual Studio 2010のWeb References機能を使用して動作させることができないためです(WSDLからクラスにメソッドを変換しようとすると)。 - どういう意味ですか? –

+0

こんにちはドミトリー。つまり、Visual Studioでプロジェクトを右クリックして[サービス参照の追加]を選択し、[詳細設定]を選択して[Web参照の追加]を選択した後、WSDLのURLを追加するとVSはWebサービスを識別します。私は、プロキシクラスのセットを作成する参照を今追加することができますが、これらはWebサービスのメソッドであり、クラスではありませんので、私のコードで使用することはできません。 – cjashwell

答えて

0

OK、私はSystem.Web.Services.Protocolsを使用していました。 SoapDocumentMethodAttributeしかし、私はSystem.Web.Services.Protocolsを使用していたはずです。 SoapRpcMethodAttribute

RPCバインディングスタイルを使用すると、リモートサービスに必要なメッセージ本文の形式が生成されます。コードをベースにしていたMSコードの属性が私の出力にどのように影響していたかについて少しお読みになりましたが、私はこのページhttp://msdn.microsoft.com/en-us/library/k1y9z356(v=vs.80).aspxに遭遇し、バインディング方法を変更してくれました。

関連する問題