Question

J'essaie d'obtenir des données d'un service Web WCF à l'aide de jQuery. Mon code jQuery est le suivant:

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

J'ai un contrat de service:

[OperationContract]
String GetContainerByName(String _label);

[OperationContract]
String GetContainerByToken(Guid _Token);

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

J'ai un fichier XSD auquel je peux accéder à http: //.svc/mex et qui comprend

<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>

Les données que je transmette à jQuery est:

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>';

J'ai besoin d'accéder à la méthode GetContainerByToken. Mais je continue à obtenir cette erreur:

"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)."
Était-ce utile?

La solution

Vous voulez parler de savon de JavaScript? C'est ballable.

Ce n'est pas vraiment une réponse, mais essayez d'inspecter votre trafic avec Wireshark et / ou Soapui. Si vous avez un client de savon fonctionnel, exécutez cela et regardez ce qu'il fait, essayez de reproduire cela.

Notez que certains serveurs SOAP utiliseront les capteurs http pour acheminer l'action (SOAPAction). Le message d'erreur m'amène à soupçonner que cela peut être le problème?

Autres conseils

Voir Exemple de savon le plus simplepour un exemple complet.

Ce que vous devez faire est de découvrir l'objectif que vous visez. Le SOAPAction, les espaces de noms, les noms d'élément et l'ordre, les attributs et tout.

Il serait bon de voir un exemple de message de savon valide et qui fonctionne, avant d'essayer de créer le javascript nécessaire pour le reproduire.

Je crois que vous devez essayer d'utiliser webhttpbinding car vous essayez un client basé sur le repos.

Essayez de rechercher une implémentation basée sur le repos, qui convient le mieux à être appelé à partir de JavaScript.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top