0

jQueryを使用してwcfWebサービスからデータを取得しようとしています。私のjQueryコードは次のとおりです。

                   jQuery.ajax({
                    type: "POST",
                    url: serviceWebPath,
                    data: data,
                    contentType: "text/xml; charset=utf-8",
                    dataType: "json",
                    success: function (data) { alert (data); },
                    error: _errorHandler
                    });

私はサービス契約を結んでいます:

[OperationContract]
String GetContainerByName(String _label);

[OperationContract]
String GetContainerByToken(Guid _Token);

[OperationContract]
void SetContainer(Guid securityToken, String _Content);

http://.svc/mexでアクセスできるxsdファイルがあります。

<wsdl:operation name="GetContainerByToken">
  <soap:operation soapAction="http://tempuri.org/IProxyShareContextContract/GetContainerByToken" style="document" /> 
 <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
 <wsdl:output>
  <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>

jQueryに渡すデータは次のとおりです。

var data = '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><GetContainerByToken><label>' + clientTokenSecuritySManager + '</label></GetContainerByToken></soap:Body></soap:Envelope>';

GetContainerByTokenメソッドにアクセスする必要があります。しかし、私はこのエラーを受け取り続けます:

"The message with Action '' cannot be processed at the receiver, 
due to a ContractFilter mismatch at the EndpointDispatcher. This
may be because of either a contract mismatch (mismatched Actions
between sender and receiver) or a binding/security mismatch between
the sender and the receiver.  Check that sender and receiver have
the same contract and the same binding (including security requirements,
e.g. Message, Transport, None)."
4

3 に答える 3

2

完全な例については、最も単純なSOAPの例を参照してください 。

あなたがする必要があるのは、あなたが目指しているターゲットを見つけることです。SOAPAction、名前名、要素の名前と順序、属性、およびすべて。

再現に必要なJavascriptを作成する前に、有効で機能するSOAPメッセージの例を確認するとよいでしょう。

于 2011-05-05T12:38:55.680 に答える
1

JavascriptからSOAPについて話したいですか?それは弾力があります。

これは実際には答えではありませんが、wiresharkやsoapUIを使用してトラフィックを検査してみてください。動作しているSOAPクライアントがある場合は、それを実行してその機能を確認し、それを複製してみてください。

一部のSOAPサーバーは、アクションのルーティングにHTTPヘッダーを使用することに注意してください(SOAPAction)。エラーメッセージは、これが問題である可能性があることを疑うように私を導きますか?

于 2011-05-05T10:45:45.493 に答える
0

RESTベースのクライアントを試しているので、WebHTTPBindingを試してみる必要があると思います。

Javascriptから呼び出すのに最適なRESTベースの実装を探してみてください。

于 2011-05-05T12:44:29.680 に答える