J'utilise wcfstorm afin de déboguer un point de fin de savon très simple:
http://www.dneonline.com/calculator.asmx?wsdl p>
Ce point final peut être utilisé pour demander les 4 calculs arithmétiques de base et récupérer une réponse: ici dans l'exemple, je demande aux numéros Je veux maintenant Créez une page HTML qui peut faire la même chose sans utiliser WCFTorm. Voici mon code: p> mais malheureusement, je ne peux recevoir que: 3 code> et
5 < / code> et je reçois comme réponse
8 code>, tout bon! p>
errordefinefind code>.
Où suis-je tort? p> p>
3 Réponses :
Où suis-je faux? P>
La charge utile / données de la demande est pas correctement formatée em>: p>
pour le savon 1.1: (Format de demande et de réponse sont en XML) P>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> Enter the numbers: <input id="intA" type="number" placeholder="No decimals" /> <code>+</code> <input id="intB" type="number" placeholder="No decimals" /> <input id="btnCallWebService" value="Call web service (SOAP 1.2)" type="button" /> <div id="response" style="display:none"> The answer is: <b id="answer"></b> </div>et comme indiqué dans ma réponse originale, qui est une chose très importante à prendre en compte: le point de terminaison du service Web de calculatrice ( http://www.dneonline.com/calculator.asmx?wsdl ) ne dispose pas de l'en-tête CORS approprié (
Access-Control-Autory-Origine Code> ) Qui est requis lors de la création de demandes de Cors - Extrait de MDN's Article A > À propos de Partage de ressources d'origine croisée (CORS) EM>: P>
Une application Web exécute une demande HTTP forte> d'origine croisée forte> quand elle demande une ressource ayant une origine différente (domaine, protocole ou port) que sa propre origine. P>
Un exemple de demande d'origine croisée: le code JavaScript avant pour Une application Web a servi de
http:/domain-a.com code> utilise
XMLHTTPQUEST code>
Pour faire une demande dehttp://api.domain-b.com/data.json code>. p>
Pour des raisons de sécurité, les navigateurs restreignent les demandes HTTP d'origine croisée initié à partir de scripts. Par exemple,
xmlhttprequest code> et le API Suivez le idable d'origine Politique . Cela signifie qu'une application Web utilisant ces API ne peut que demander Ressources http de la même origine que l'application a été chargée, Sauf si la réponse de l'autre origine inclut les bons cors en-têtes. P> blockQuote> li> ol>
Donc, si ce qui précède (le deuxième paragraphe) s'applique à vous, c'est-à-dire que vous ne faites pas réellement la demande CORS / AJAX de la même origine / domaine fort>, alors vous pourriez: p>
Si vous possédez le domaine / site Web du service Web de calculatrice (dneonline.com) .. ou avez le contrôle de son administration, alors Activez Cors sur ce site. P> LI>
ou si votre site dispose d'une application côté serveur comme PHP ou Python, vous pouvez utiliser un script côté serveur pour effectuer la demande - Exemple em> dans php Strong>, vous pouvez avoir
calculatrice.php code> qui rend la demande à distance à l'API, puis votre script fait une demande AJAX au
calcator.php p> p> LI >
ou vous pouvez utiliser un proxy Cors tel que em> HTTPS: // Cors-anywhere.herokuapp.com que j'ai essayé de travailler - Vérifiez la démo ci-dessous. p> li> OL>
Démo: Faire une demande Ajax à une ressource activée non cors à l'aide de https: // cors -Anywhere.herokuapp.com h2>
p>
<?xml version="1.0" encoding="utf-8"?> <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> <soap12:Body> <Add xmlns="http://tempuri.org/"> <intA>int</intA> <intB>int</intB> </Add> </soap12:Body> </soap12:Envelope>
PS: La réponse suppose que le site Web (dneonline.com) n'est pas à vous. Sinon, vous pouvez simplement Activer Cors .
Merci mais j'ai besoin de HTML et de JQuery. Php n'est pas une option
Le point principal concerne les Cors non activés sur le point de terminaison de service Web de calculatrice sur DNONLINE.COM. Mais de toute façon, voir la réponse mise à jour - j'espère que cela vaut une voix up? ..
Merci pour votre réponse précise. Je ne suis pas le propriétaire du site Web. Avez-vous un exemple d'URL avec Cors activé que je peux utiliser pour tester? Mille mercis
Si vous voulez dire n'importe quelle URL, vous pouvez faire une demande Ajax à http://sormy-refuge-68458.herokuapp.com/todos/
1 code> et
200 code>. Sur demande réussie, vous obtiendrez une réponse mannequin JSON.
en raison de la même politique d'origine forte>, il n'est pas possible d'avoir une page sur http: // www.example.com et créer un appel Ajax à http://www.anotherdomain.com . p>
Si vous ne pouvez pas déplacer votre JavaScript sur le même domaine que le service Web, le seul moyen fiable de faire ce travail est de créer un script côté serveur qui sera hébergé sur le même domaine que votre code JavaScript. Vous enverriez donc une demande AJAX à votre script côté serveur qui, à son tour, invoquera le service Web distant et renvoie le résultat. Les liens suivants montrent comment créer un simple serveur ASP.NET MVC pour consommer WCF Service: P>
JQUERY SOAP propose un plug-in JQuery pour la communication d'un service Web à l'aide de savon, en supposant que Votre service JavaScript et Web sont sur le même domaine. P>
J'ai donc besoin de quelque chose comme Xampp?
XAMPP pour PHP et IIS pour ASP sont de bons choix pour héberger votre application back-end.
Sally CJ a fait une bonne réponse sur ce post, je crois mériter d'être celui qui a donné la bonne réponse. J'ai appris tant de choses sur les Cors. P>
Cependant, je dois mentionner qu'il existe un moyen d'archiver le résultat avec un simple fichier HTML: p>
appeler Webservice utilisant Ajax jQuery avec du savon avec du savon p>
Dump toutes les données de valeurs, status, req et voir ce que vous entrez dans la console