0
votes

Publier une demande de savon en HTML et obtenir une réponse

J'utilise wcfstorm afin de déboguer un point de fin de savon très simple:

http://www.dneonline.com/calculator.asmx?wsdl

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 3 et 5 < / code> et je reçois comme réponse 8 , tout bon!

Entrez la description de l'image ici

Je veux maintenant Créez une page HTML qui peut faire la même chose sans utiliser WCFTorm. Voici mon code: xxx

mais malheureusement, je ne peux recevoir que: errordefinefind . Où suis-je tort?


1 commentaires

Dump toutes les données de valeurs, status, req et voir ce que vous entrez dans la console


3 Réponses :


1
votes

Où suis-je faux? P>

  1. 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>
  2. 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 de http://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>

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

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

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


5 commentaires

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/ / où le < / Code> est un entier entre 1 et 200 . Sur demande réussie, vous obtiendrez une réponse mannequin JSON.



1
votes

en raison de la même politique d'origine , il n'est pas possible d'avoir une page sur http: // www.example.com et créer un appel Ajax à http://www.anotherdomain.com .

solution?


2 commentaires

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.



0
votes

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.

Cependant, je dois mentionner qu'il existe un moyen d'archiver le résultat avec un simple fichier HTML:

appeler Webservice utilisant Ajax jQuery avec du savon avec du savon


0 commentaires