probar - Cómo hacer una llamada a SOAP wsdl web services desde la línea de comando
web service wsdl ejemplo (6)
En la línea de comandos de Linux, puede simplemente ejecutar:
curl -H "Content-Type: text/xml; charset=utf-8" -H "SOAPAction:" -d @your_soap_request.xml -X POST https://ws.paymentech.net/PaymentechGateway
Necesito hacer una llamada de servicio web SOAP a https://sandbox.mediamind.com/Eyeblaster.MediaMind.API/V2/AuthenticationService.svc?wsdl y utilizar la operación ClientLogin mientras paso los parámetros: ApplicationKey, Password y UserName . La respuesta es UserSecurityToken. Ellos son todos cuerdas.
Aquí está el enlace explicando completamente lo que estoy tratando de hacer: https://sandbox.mediamind.com/Eyeblaster.MediaMind.API.Doc/?v=3
¿Cómo puedo hacer esto en la línea de comando? (Windows y / o Linux serían útiles)
Es un servicio web SOAP estándar y ordinario. SSH no tiene nada que hacer aquí. Acabo de curl con curl (one-liner):
$ curl -X POST -H "Content-Type: text/xml" /
-H "SOAPAction: /"http://api.eyeblaster.com/IAuthenticationService/ClientLogin/"" /
--data-binary @request.xml /
https://sandbox.mediamind.com/Eyeblaster.MediaMind.API/V2/AuthenticationService.svc
Donde el archivo request.xml
tiene los siguientes contenidos:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:api="http://api.eyeblaster.com/">
<soapenv:Header/>
<soapenv:Body>
<api:ClientLogin>
<api:username>user</api:username>
<api:password>password</api:password>
<api:applicationKey>key</api:applicationKey>
</api:ClientLogin>
</soapenv:Body>
</soapenv:Envelope>
Me sale este hermoso 500:
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<s:Fault>
<faultcode>s:Security.Authentication.UserPassIncorrect</faultcode>
<faultstring xml:lang="en-US">The username, password or application key is incorrect.</faultstring>
</s:Fault>
</s:Body>
</s:Envelope>
¿Has probado el soapui ?
Lo usé usando CURL:
USER=''myusername''
PASSWORD=''mypassword''
AUTHENTICATION="$USER:$PASSWORD"
URL=''http://mysoapserver:8080/meeting/aws''
SOAPFILE=getCurrentMeetingStatus.txt
TIMEOUT=5
Solicitud de CURL:
curl --user "${AUTHENTICATION}" --header ''Content-Type: text/xml;charset=UTF-8'' --data @"${SOAPFILE}" "${URL}" --connect-timeout $TIMEOUT
Yo uso esto para verificar la respuesta:
http_code=$(curl --write-out "%{http_code}/n" --silent --user "${AUTHENTICATION}" --header ''Content-Type: text/xml;charset=UTF-8'' --data @"${SOAPFILE}" "${URL}" --connect-timeout $TIMEOUT --output /dev/null)
if [[ $http_code -gt 400 ]]; # 400 and 500 Client and Server Error codes http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
then
echo "Error: HTTP response ($http_code) getting URL: $URL"
echo "Please verify parameters/backend. Username: $USER Password: $PASSWORD Press any key to continue..."
read entervalue || continue
fi
Para Windows, encontré esto funcionando:
Set http = CreateObject("Microsoft.XmlHttp")
http.open "GET", "http://www.mywebservice.com/webmethod.asmx?WSDL", FALSE
http.send ""
WScript.Echo http.responseText
Referencia: CodeProject
Para ventanas:
Guarde lo siguiente como MSFT.vbs:
set SOAPClient = createobject("MSSOAP.SOAPClient")
SOAPClient.mssoapinit "https://sandbox.mediamind.com/Eyeblaster.MediaMind.API/V2/AuthenticationService.svc?wsdl"
WScript.Echo "MSFT = " & SOAPClient.GetQuote("MSFT")
Luego, desde un símbolo del sistema, ejecuta:
C:/>MSFT.vbs
Referencia: http://blogs.msdn.com/b/bgroth/archive/2004/10/21/246155.aspx
curl --header "Content-Type: text/xml;charset=UTF-8" --header "SOAPAction:ACTION_YOU_WANT_TO_CALL" --data @FILE_NAME URL_OF_THE_SERVICE
El comando anterior fue útil para mí
Ejemplo
curl --header "Content-Type: text/xml;charset=UTF-8" --header "SOAPAction:urn:GetVehicleLimitedInfo" --data @request.xml http://11.22.33.231:9080/VehicleInfoQueryService.asmx