web-dev-qa-db-fra.com

comment envoyer une demande SOAP?

Je suis nouveau sur SOAP et xml. J'ai lu un certain nombre de tutoriels mais rien ne semble assez clair.

Je suis un peu confus, comment envoyer une demande SOAP? La façon dont j'ai essayé de le faire est d'enregistrer ma demande SOAP (comme indiqué ci-dessous) ) comme: testRequest.xml.

POST /MobileCashPayout.asmx HTTP/1.1
Host: 192.168.1.80
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length
<?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>
<Payout xmlns="http://www.mycel.com/">
<Username>string</Username>
<Password>string</Password>
<referenceID>string</referenceID>
<sourceMsisdn>string</sourceMsisdn>
<destMsisdn>string</destMsisdn>
<Amount>decimal</Amount>
<MobilePin>string</MobilePin>
<cashInformation>string</cashInformation>
<merchantName>string</merchantName>
</Payout>
</soap12:Body>
</soap12:Envelope>

J'ouvre ensuite le fichier (testRequest.xml) avec un navigateur pour qu'il soit envoyé.

ce que j'obtiens en retour est un message d'erreur indiquant: Erreur d'analyse XML: erreur de syntaxe Emplacement: localhost/projects/test.xml Numéro de ligne 1, colonne 1: POST /MobileCashPayout.asmx HTTP/1.1 ^

Suis-je l'envoyer dans le mauvais sens? Sil te plait aide moi?

15
SirBT

L'ouverture de ce document dans le navigateur n'enverrait pas de demande. Vous avez plusieurs options:

  • écrire un petit script dans n'importe quel langage familier, le script doit se connecter au serveur spécifié et envoyer une demande POST avec un corps tel que mentionné dans votre message
  • utiliser certains des programmes existants pour le faire pour vous

Si vous êtes inexpérimenté, je recommanderais certainement la deuxième option. Mon préféré est SoapUI, voir ici .

16
Miljen Mikic

Ce billet de blog m'a aidé. Python SOAP Requête utilisant des requêtes

#!/usr/bin/env python
# encoding: utf-8

import requests
from XML import XML

request = u"""<?xml version="1.0" encoding="utf-8"?>
              <soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://www.webserviceX.NET/">
                  <soapenv:header>
                  <soapenv:body>
                      <web:conversionrate>
                          <web:fromcurrency>GBP</web:fromcurrency>
                          <web:tocurrency>CHF</web:tocurrency>
                      </web:conversionrate>
                  </soapenv:body>
              </soapenv:header></soapenv:envelope>"""

encoded_request = request.encode('utf-8')

headers = {"Host": "www.webservicex.net",
           "Content-Type": "text/xml; charset=UTF-8",
           "Content-Length": len(encoded_request)}

response = requests.post(url="http://www.webservicex.net/CurrencyConvertor.asmx",
                         headers = headers,
                         data = encoded_request,
                         verify=False)

print unicode(XML(response.text))
7
JohnMudd

Sous linux, vous pouvez utiliser curl pour envoyer le soap xml. Voici comment procéder:

curl --header "Content-Type: text/xml;charset=UTF-8" --header "SOAPAction: ACTION_YOU_WANT_TO_CALL" --data @FILE_NAME URL_OF_THE_SOAP_WEB_SERVICE_ENDPOINT

En utilisant le testRequest.xml fichier créé, vous pouvez

curl --header "Content-Type: text/xml;charset=UTF-8" --header "SOAPAction: ACTION_YOU_WANT_TO_CALL" --data @testRequest.xml URL_OF_THE_SOAP_WEB_SERVICE_ENDPOINT

Voici un lien qui décrit le processus complet.

3
Kihats

Vous ne pouvez pas envoyer une demande de savon lorsqu'un navigateur pour autant que je sache. Je vous propose d'utiliser un outil comme Soap UI

pour envoyer une demande.

2
Silmarillium