построить запрос на мыло из wsdl и контракт на обслуживание с jquery - PullRequest
0 голосов
/ 05 мая 2011

Я пытаюсь получить данные из веб-службы wcf, используя jQuery. Мой код 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);

У меня есть файл xsd, к которому я могу получить доступ по адресу http: //.svc/mex и который включает

<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)."

Ответы [ 3 ]

2 голосов
/ 05 мая 2011

См. Простейший пример SOAP для полного примера.

Что вам нужно сделать, это выяснить, к какой цели вы стремитесь. Действие SOAPAction, пространства имен, имена и порядок элементов, атрибуты и все.

Было бы неплохо увидеть пример правильного работающего SOAP-сообщения, прежде чем пытаться создать Javascript, необходимый для его воспроизведения.

1 голос
/ 05 мая 2011

Вы хотите поговорить о SOAP из Javascript? Это глупо.

Это не совсем ответ, но попробуйте проверить ваш трафик с помощью wireshark и / или soapUI. Если у вас есть работающий SOAP-клиент, запустите его и посмотрите, что он делает, а затем попытайтесь скопировать его.

Обратите внимание, что некоторые серверы SOAP будут использовать HTTP-заголовки для маршрутизации действия (SOAPAction). Сообщение об ошибке заставляет меня подозревать, что это может быть проблемой?

0 голосов
/ 05 мая 2011

Я полагаю, что вы должны попробовать использовать WebHTTPBinding, поскольку вы пробуете клиент на основе REST.

Попробуйте найти реализацию на основе REST, которая лучше всего подходит для вызова из Javascript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...