কীভাবে একটি SOAP ডাব্লুএসডিএল ওয়েব পরিষেবাদি কমান্ড লাইন থেকে কল করবেন


92

আমাকে https://sandbox.mediamind.com/Eyeblaster.MediaMind.API/V2/AuthenticationService.svc?wsdl এ একটি এসওএপি ওয়েবসার্ভিস কল করতে হবে এবং পরামিতিগুলি পেরিয়ে যাওয়ার সময় অপারেশন ক্লায়েন্টলগিন ব্যবহার করতে হবে: অ্যাপ্লিকেশনকি, পাসওয়ার্ড এবং ব্যবহারকারীর নাম । প্রতিক্রিয়াটি ইউজারসিকিউরিটি টোকেন। তারা সব স্ট্রিং হয়।

আমি কী করতে চাইছি তা সম্পূর্ণরূপে এখানে লিঙ্কটি ব্যাখ্যা করছে: https://sandbox.mediamind.com/Eyeblaster.MediaMind.API.Doc/?v=3

কমান্ড লাইনে আমি কীভাবে এটি করতে পারি? (উইন্ডোজ এবং / অথবা লিনাক্স সহায়ক হবে)

উত্তর:


146

এটি একটি স্ট্যান্ডার্ড, সাধারণ এসওএপি ওয়েব পরিষেবা। এসএসএইচের এখানে কিছু করার নেই। আমি শুধু এটি দিয়ে কল করেছি (এক রৈখিক):

$ 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 সাবান,। কমান্ড লাইন আইএমএইচও ব্যবহার করার চেয়ে অনেক বেশি ভাল।
অস্পষ্ট বিশ্লেষণ 21

আপনি কার্লের কোন সংস্করণ ব্যবহার করছেন? খনি বলছে "হোস্ট '--ডাটা-বাইনারি' সমাধান করতে পারেনি, এবং সেই https হ'ল" অসমর্থিত প্রোটোকল "
মেরিনা

যদি আপনি ঠিক মতোই করেন তবে আমি সবসময় মধ্যমাইন্ডের থেকে একটি ত্রুটি পাই যা বলে যে "একটি অপ্রত্যাশিত অভ্যন্তরীণ সার্ভার ত্রুটি ঘটেছে।" আমার যে করণীয় করা উচিত সেই উত্তরে আপনি কী এমন কিছু অন্তর্ভুক্ত করেননি (আন / পিডাব্লু / কীটি বাস্তবের সাথে প্রতিস্থাপনের জন্য)?
মেরিনা

@ মারিনা: এখন আমি " 500 অভ্যন্তরীণ সার্ভার ত্রুটি " পেয়েছি । তবে এটি একটি সার্ভার-সাইড ত্রুটি, আমাদের (?) নয়, ডাব্লুএস সরবরাহকারীকে জিজ্ঞাসা করুন কী হচ্ছে। কিছুদিন আগে এটি কাজ করছিল।
টমাসজ নুরকিউইচস

আপনার উত্তরের জন্য ধন্যবাদ. অনুরোধ.এক্সএমএল-এ একটি অনুপস্থিত / খাম রয়েছে, যা সার্ভার থেকে ত্রুটির প্রতিক্রিয়া সৃষ্টি করে। একবার আমি যুক্ত করেছি যে এটি ঠিক আছে worked অন্য লোকেদের ত্রুটি পাওয়ার জন্য এটি সম্ভবত সমস্যা।
অপদান

24

লিনাক্স কমান্ড লাইনে, আপনি কেবল কার্যকর করতে পারেন:

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

13

সিআরএল ব্যবহার:

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

সিআরএল অনুরোধ:

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

4
NAME USERNAME আমার লিনাক্স ব্যবহারকারীর নাম সমাধান করে, আমার স্ক্রিপ্টগুলিতে $ USER- এ পরিবর্তিত হয়েছে
দিমিত্রিসান্ডালভ

12

এখানে আরও একটি নমুনা সিআরএল - ব্যাংক সুইফট কোডগুলির জন্য এসওএপি ( ডাব্লুএসডিএল ) অনুরোধ

অনুরোধ

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>

4
বেশ কয়েকটি শিরোনামের লাইনগুলি (অন্য-এইচ) নির্দেশ করার জন্য +1, এবং সমস্ত এক জায়গায় থাকা ঝরঝরে। এসএপি প্রসঙ্গে কাজ করেছেন।
পর্যন্ত

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 

অধিক তথ্য


3

উইন্ডোজ ব্যবহারকারীরা পাওয়ারশেলের বিকল্পের সন্ধান করছেন, এটি এখানে (পোষ্ট ব্যবহার করে) রয়েছে। আমি এটিকে পাঠযোগ্যতার জন্য একাধিক লাইনে বিভক্ত করেছি।

$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

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


4
এই বছর 2004 কৌশলটি উইন্ডো 7 এ কমপক্ষে ব্যর্থ।
আরম পারোনিক্যান

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.