Как сделать вызов веб-служб SOAP wsdl из командной строки
Мне нужно сделать вызов веб-сервиса SOAPhttps://sandbox.mediamind.com/Eyeblaster.MediaMind.API/V2/AuthenticationService.svc?wsdl и использовать операцию ClientLogin при прохождении через параметры: ApplicationKey, пароль и имя пользователя. Ответ-UserSecurityToken. Все они-струны.
вот ссылка, полностью объясняющая, что я пытаюсь делать:
https://sandbox.mediamind.com/Eyeblaster.MediaMind.API.Doc/?v=3
Как я могу сделать это в командной строке? (Windows и / или Linux было бы полезно)
6 ответов:
это стандартный, обычный веб-сервис SOAP. SSH здесь не при чем. Я только что назвал его с curl (шутка):
$ 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здесь
request.xmlфайл имеет следующее содержание:<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>Я получаю этот красивый 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>вы пробовали soapui?
в командной строке Linux, вы можете просто выполнить:
curl -H "Content-Type: text/xml; charset=utf-8" -H "SOAPAction:" -d @your_soap_request.xml -X POST https://ws.paymentech.net/PaymentechGateway
С помощью CURL:
USER='myusername' PASSWORD='mypassword' AUTHENTICATION="$USER:$PASSWORD" URL='http://mysoapserver:8080/meeting/aws' SOAPFILE=getCurrentMeetingStatus.txt TIMEOUT=5CURL запрос:
curl --user "${AUTHENTICATION}" --header 'Content-Type: text/xml;charset=UTF-8' --data @"${SOAPFILE}" "${URL}" --connect-timeout $TIMEOUTЯ использую это для проверки ответа:
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
Для Windows:
сохраните следующее как 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")затем из командной строки выполните команду:
C:\>MSFT.vbsСсылка:http://blogs.msdn.com/b/bgroth/archive/2004/10/21/246155.aspx
для Windows я нашел это работает:
Set http = CreateObject("Microsoft.XmlHttp") http.open "GET", "http://www.mywebservice.com/webmethod.asmx?WSDL", FALSE http.send "" WScript.Echo http.responseTextссылки: CodeProject
curl --header "Content-Type: text/xml;charset=UTF-8" --header "SOAPAction:ACTION_YOU_WANT_TO_CALL" --data @FILE_NAME URL_OF_THE_SERVICEвыше команда была полезна для меня
пример
curl --header "Content-Type: text/xml;charset=UTF-8" --header "SOAPAction:urn:GetVehicleLimitedInfo" --data @request.xml http://11.22.33.231:9080/VehicleInfoQueryService.asmx
Comments