2012-08-31 109 views
41

Necesito hacer una llamada al servicio web SOAP al https://sandbox.mediamind.com/Eyeblaster.MediaMind.API/V2/AuthenticationService.svc?wsdl y usar la operación ClientLogin mientras paso los parámetros: ApplicationKey, Password y UserName. La respuesta es UserSecurityToken. Ellos son todos cuerdas.Cómo hacer una llamada a SOAP wsdl web services desde la línea de comando

Aquí está el enlace explicación completa de 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 comandos? (Windows y/o Linux serían útiles)

Respuesta

77

Es un servicio web SOAP estándar y ordinario. SSH no tiene nada que hacer aquí. Acabo de llamar con (de una sola línea):

$ 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 

Dónde request.xml archivo tiene el siguiente contenido:

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

consigo 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 necesitado ?

Read more

+3

+1 soapui, una herramienta muy útil y gratuita para trabajar con servicios web basados ​​en jabón.Mucho mejor que usar la línea de comando en mi humilde opinión. – fuzzyanalysis

+0

¿Qué versión de curl estás usando? El mío dice "No se pudo resolver el host '--data-binary', y ese https es un" protocolo no admitido ". – Marina

+0

Si hago exactamente lo que hice, siempre obtengo un error de la mediamind que dice que" Un inesperado interno error del servidor. "¿Hay algo que no incluyó en la respuesta que debería estar haciendo (además de reemplazar la clave un/pw/con las reales)? – Marina

2

Para Windows:

guardar los siguientes: 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") 

Entonces, desde un símbolo del sistema, ejecute:

C:\>MSFT.vbs 

Referencia: http://blogs.msdn.com/b/bgroth/archive/2004/10/21/246155.aspx

+1

La técnica de este año 2004 falla al menos en la ventana 7. –

+0

Prueba Powershell. – fuzzyanalysis

2

He utilizado esta usando CURL: solicitud

USER='myusername' 
PASSWORD='mypassword' 
AUTHENTICATION="$USER:$PASSWORD" 
URL='http://mysoapserver:8080/meeting/aws' 
SOAPFILE=getCurrentMeetingStatus.txt 
TIMEOUT=5 

CURL:

curl --user "${AUTHENTICATION}" --header 'Content-Type: text/xml;charset=UTF-8' --data @"${SOAPFILE}" "${URL}" --connect-timeout $TIMEOUT 

Lo utilizo 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 
+1

$ USERNAME se resuelve en mi nombre de usuario de Linux, cambiado a $ USER en mis scripts – DmitrySandalov

7

En la línea de comandos de Linux, sólo tiene que ejecutar:

curl -H "Content-Type: text/xml; charset=utf-8" -H "SOAPAction:" -d @your_soap_request.xml -X POST https://ws.paymentech.net/PaymentechGateway 
1
curl --header "Content-Type: text/xml;charset=UTF-8" --header "SOAPAction:ACTION_YOU_WANT_TO_CALL" --data @FILE_NAME URL_OF_THE_SERVICE 

Por encima de comando era ú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 

More info

1

Para Windows encontré este trabajo:

Set http = CreateObject("Microsoft.XmlHttp") 
http.open "GET", "http://www.mywebservice.com/webmethod.asmx?WSDL", FALSE 
http.send "" 
WScript.Echo http.responseText 

Referencia: CodeProject

Cuestiones relacionadas