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?
L'ouverture de ce document dans le navigateur n'enverrait pas de demande. Vous avez plusieurs options:
Si vous êtes inexpérimenté, je recommanderais certainement la deuxième option. Mon préféré est SoapUI, voir ici .
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))
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.
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.