कमांड लाइन से SOAP wsdl वेब सेवाएँ कॉल कैसे करें


91

मुझे https://sandbox.mediamind.com/Eyeblaster.MediaMind.API/V2/AuthenticationService.svc?wsdl पर SOAP webservice कॉल करने की आवश्यकता है और मापदंडों से गुजरते समय ऑपरेशन क्लायंट योगिन का उपयोग करने के लिए: ApplicationKey, पासवर्ड और UserName । प्रतिक्रिया UserSecurityToken है। वे सभी तार हैं।

यहाँ लिंक पूरी तरह से समझा रहा है कि मैं क्या करने की कोशिश कर रहा हूँ: https://sandbox.mediamind.com/Eyeblaster.MediaMind.API.Doc/?v=3

मैं कमांड लाइन पर यह कैसे कर सकता हूं? (विंडोज और / या लिनक्स सहायक होगा)

जवाबों:


146

यह एक मानक, साधारण SOAP वेब सेवा है। एसएसएच का यहां कोई लेना-देना नहीं है। मैंने बस इसके साथ फोन किया था (एक लाइन):

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

आपने कोशिश की है ?

अधिक पढ़ें


6
+1 साबुन, साबुन आधारित वेब सेवाओं के साथ काम करने के लिए एक बहुत ही उपयोगी और मुफ्त उपकरण है। कमांड लाइन IMHO का उपयोग करने से बहुत बेहतर है।
फजी विश्लेषण

आप कर्ल के किस संस्करण का उपयोग कर रहे हैं? मेरा कहना है कि "होस्ट -डॉटा-बाइनरी को हल नहीं किया जा सका", और यह कि https एक "असमर्थित प्रोटोकॉल" है
मरीना

यदि मैं ठीक वही करता हूं जो आपने किया है, तो मुझे हमेशा एक मीडियम से एक त्रुटि मिलती है जो कहती है कि "एक अप्रत्याशित आंतरिक सर्वर त्रुटि हुई है।" क्या कोई ऐसी चीज़ है जिसे आपने उस उत्तर में शामिल नहीं किया है जो मुझे करना चाहिए (इसके अलावा वास्तविक लोगों के साथ संयुक्त राष्ट्र / pw / कुंजी को बदलने के लिए)?
मरीना

@ मरीना: अब मुझे " 500 आंतरिक सर्वर त्रुटि " भी मिलती है । हालाँकि यह एक सर्वर-साइड एरर है, हमारा (?) नहीं, डब्ल्यूएस प्रदाता से पूछें कि क्या हो रहा है। कुछ दिन पहले यह काम कर रहा था।
टॉमाज़ नर्कविक्ज़

आपके उत्तर के लिए धन्यवाद। अनुरोध में एक अनुपलब्ध / लिफ़ाफ़ा है। Xml, जिससे सर्वर से त्रुटि प्रतिक्रिया होती है। एक बार मैंने जोड़ा कि यह ठीक काम करता है। हो सकता है कि अन्य लोगों की त्रुटियों के लिए यह मुद्दा हो।
अपदाना

22

लिनक्स कमांड लाइन पर, आप बस निष्पादित कर सकते हैं:

curl -H "Content-Type: text/xml; charset=utf-8" -H "SOAPAction:"  -d @your_soap_request.xml -X POST https://ws.paymentech.net/PaymentechGateway

13

CURL का उपयोग करना:

SOAP_USER='myusername'
PASSWORD='mypassword'
AUTHENTICATION="$SOAP_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

मैं इसका उपयोग प्रतिक्रिया को सत्यापित करने के लिए करता हूं:

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: $SOAP_USER Password: $PASSWORD Press any key to continue..."
read entervalue || continue
fi


12

बैंक स्विफ्ट कोड के लिए यहां एक और नमूना CURL - SOAP ( WSDL ) का अनुरोध है

निवेदन

curl -X POST http://www.thomas-bayer.com/axis2/services/BLZService \
  -H 'Content-Type: text/xml' \
  -H 'SOAPAction: blz:getBank' \
  -d '
  <soapenv:Envelope 
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:blz="http://thomas-bayer.com/blz/">
    <soapenv:Header/>
    <soapenv:Body>
      <blz:getBank>
        <blz:blz>10020200</blz:blz>
      </blz:getBank>
    </soapenv:Body>
  </soapenv:Envelope>'

प्रतिक्रिया

< HTTP/1.1 200 OK
< Server: Apache-Coyote/1.1
< Content-Type: text/xml;charset=UTF-8
< Date: Tue, 26 Mar 2019 08:14:59 GMT
< Content-Length: 395
< 
<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope
  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Body>
    <ns1:getBankResponse
      xmlns:ns1="http://thomas-bayer.com/blz/">
      <ns1:details>
        <ns1:bezeichnung>BHF-BANK</ns1:bezeichnung>
        <ns1:bic>BHFBDEFF100</ns1:bic>
        <ns1:ort>Berlin</ns1:ort>
        <ns1:plz>10117</ns1:plz>
      </ns1:details>
    </ns1:getBankResponse>
  </soapenv:Body>
</soapenv:Envelope>

1
+1 कई हेडर लाइन (दूसरा -एच) को इंगित करने के लिए, और जैसा कि सभी एक स्थान पर होना साफ-सुथरा है। SAP के संदर्भ में काम किया।
तिल

5
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 

और जानकारी


2

विंडोज के लिए:

निम्न को 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


1
इस वर्ष 2004 की तकनीक विंडो 7 पर कम से कम विफल हो जाती है।
अराम पारोनिक्यन

2

विंडोज के लिए मुझे यह काम मिला:

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

संदर्भ: CodeProject


2

Windows उपयोगकर्ताओं के लिए एक PowerShell विकल्प की तलाश में, यहाँ यह (POST का उपयोग करके) है। मैंने इसे पठनीयता के लिए कई लाइनों में विभाजित किया है।

$url = 'https://sandbox.mediamind.com/Eyeblaster.MediaMind.API/V2/AuthenticationService.svc'
$headers = @{
    'Content-Type' = 'text/xml';
    'SOAPAction' = 'http://api.eyeblaster.com/IAuthenticationService/ClientLogin'
}
$envelope = @'
    <Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
        <Body>
            <yourEnvelopeContentsHere/>
        </Body>
    </Envelope>
'@     # <--- This line must not be indented

Invoke-WebRequest -Uri $url -Headers $headers -Method POST -Body $envelope
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.