2012-08-31 10 views
41

ich einen SOAP Webservice Aufruf https://sandbox.mediamind.com/Eyeblaster.MediaMind.API/V2/AuthenticationService.svc?wsdl machen müssen rufen tun und den Betrieb Clientlogin zu verwenden, während durch die Parameter übergeben: ApplicationKey, Kennwort und Benutzername. Die Antwort lautet UserSecurityToken. Sie sind alle Saiten.Wie ein SOAP WSDL Web Services von der Kommandozeile

Hier ist der Link vollständig zu erklären, was ich zu tun versucht: https://sandbox.mediamind.com/Eyeblaster.MediaMind.API.Doc/?v=3

Wie kann ich dies tun auf der Kommandozeile? (Windows und/oder Linux wären hilfreich)

Antwort

77

Es ist ein standardmäßiger SOAP-Webservice. SSH hat hier nichts zu tun. Ich nannte es nur mit (Einzeiler):

$ 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 

Wo request.xml Datei den folgenden Inhalt hat:

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

ich dieses schöne 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> 

Haben Sie versucht, ?

Read more

+3

+1 soapui, ein sehr nützliches und kostenloses Werkzeug für die Arbeit mit seifenbasierten Webdiensten.Viel besser als die Befehlszeile IMHO. – fuzzyanalysis

+0

Welche Version von Curl verwenden Sie? Mine sagt: "Host konnte nicht aufgelöst werden" --data-binary ", und https ist ein" Nicht unterstütztes Protokoll ". – Marina

+0

Wenn ich genau das mache, was Sie getan haben, bekomme ich immer einen Fehler von mediamind, der besagt, dass ein unerwarteter interner Fehler aufgetreten ist Serverfehler ist aufgetreten. "Gibt es etwas, das Sie nicht in die Antwort aufgenommen haben, die ich tun sollte (abgesehen davon, dass Sie den un/pw/key durch die echten ersetzen)? – Marina

2

Für Windows:

Speichern Sie die folgenden als 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") 

dann aus einer Eingabeaufforderung den Befehl:

C:\>MSFT.vbs 

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

+1

Dieses Jahr 2004 versagt die Technik mindestens auf Windows 7. –

+0

Versuchen Sie Powershell. – fuzzyanalysis

2

ich verwendet, um dieses mit Curl:

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

Anfrage Curl:

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

ich diese verwenden Antwort zu überprüfen:

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 wird in meinen Linux-Benutzernamen aufgelöst, in meinen Skripten zu $ ​​USER geändert – DmitrySandalov

7

Auf Linux-Befehlszeile, können Sie einfach ausführen:

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 

Obiger Befehl war hilfreich für mich

Beispiel

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

Für Windows ich diese Arbeit gefunden:

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

Referenz: CodeProject

Verwandte Themen