সহজ SOAP উদাহরণ


241

জাভাস্ক্রিপ্ট ব্যবহার করে সবচেয়ে সহজ সোপ উদাহরণটি কী?

যতটা সম্ভব কার্যকর হওয়ার জন্য, উত্তরটি দেওয়া উচিত:

  • ক্রিয়ামূলক থাকুন (অন্য কথায় আসলে কাজ করুন)
  • কমপক্ষে একটি প্যারামিটার পাঠান যা কোডের অন্য যে কোনও স্থানে সেট করা যায়
  • কোডের অন্য যে কোনও জায়গায় পড়া যায় এমন কমপক্ষে একটি ফলাফলের মান প্রক্রিয়া করুন
  • বেশিরভাগ আধুনিক ব্রাউজার সংস্করণ দিয়ে কাজ করুন
  • বাহ্যিক লাইব্রেরি ব্যবহার না করে যতটা সম্ভব স্পষ্ট এবং সংক্ষিপ্ত হয়ে উঠুন Be

5
সহজ এবং পরিষ্কার হওয়া কোনও বাহ্যিক গ্রন্থাগার না ব্যবহারের সাথে দ্বন্দ্ব হতে পারে। আপনি কি সত্যিই নিজের ডাব্লুএসডিএল -> জেএস ক্লাস রূপান্তরকারী লিখতে চান?
মাইকমেকানা

19
আমার একটি প্রশ্ন আছে: যদি আমি এই প্রশ্নটি প্রথম ব্যক্তি হিসাবে দেখে থাকি তবে আমি "কিছু কোড দেখান, এটি কোনও কোডার ভাড়া নয়" এর মত মন্তব্যে কমিয়ে দেওয়া হবে বলে আশা করি। টমাস ব্যক্তিগত কিছু নয় :) তবে সম্প্রদায় কীভাবে ভাল এবং খারাপ তা কীভাবে সিদ্ধান্ত নেয় তা আমি বুঝতে পারছি না।
白 目

4
আরে চিন্তা নেই। আমার ধারণা অনুমান করা যায় যে জাভাস্ক্রিপ্ট ব্যবহার করে একটি এসওএপি ক্লায়েন্ট লেখার প্রচুর উপায় রয়েছে। তাদের মধ্যে বেশ কুরুচিপূর্ণ, তাই আমি এটি পরিষ্কার রাখার বিষয়ে কিছু ধারণার জন্য আশা করছিলাম।
থমাস ব্র্যাট

@ এটি কারণ, ১. এই প্রশ্নটি বরং পুরানো, এখনও প্রচুর মৌলিক প্রশ্ন জিজ্ঞাসা করা হয়েছিল যা traditionতিহ্য অনুসারে অনেকগুলি উত্সাহ পেয়েছে, ২. এটি একটি বরং সাধারণ সমস্যার বর্ণনা দেয়, তাই সম্ভবত এটি নতুন ব্যবহারকারীদের আকর্ষণ করতে পারে যারা ভোট দিতে পারে "ওহে আমিও তা জানতে চাই!" নীতিটি "আরে পরিবর্তে, এই প্রশ্নটি গবেষণার প্রচেষ্টা দেখায় it এটি দরকারী এবং স্পষ্ট!"! যেহেতু প্রশ্নটি আমার মতে এটির অভাব রয়েছে, তাই আমি এটিকে কমিয়ে দিয়েছি। ব্যক্তিগত
কিছুও

@ থমাসব্র্যাট আমি সম্ভবত মেটাতে এটি চালিয়ে যাব তবে এই ধরণের প্রশ্নগুলির একটি সুযোগ পাওয়ার যোগ্য। এটি রেফারেন্স বা জ্ঞানের ভিত্তির একটি বংশদ্ভুত গ্রন্থাগারের জন্য আদর্শ প্রশ্ন। তবে কেবল সম্ভবত গৃহীত উত্তরও অতিরিক্ত লেগওয়ার্কের জন্য উত্সাহের দাবি রাখে? এসও ছাড়া আর কিছুই গ্রহণযোগ্য নয়, তাহলে আর কোথায়? এমনকি এসও চেষ্টা করে একটি ডকুমেন্টেশন সাইট তৈরির ধারণার প্রতি নজর রেখেছিল - এবং ব্যর্থ হয়েছিল। এসও প্রতিস্থাপন করার মতো কিছুই নেই ...
ইয়োও

উত্তর:


201

এটি আমি তৈরি করতে পারি সবচেয়ে সহজ জাভাস্ক্রিপ্ট এসওএপি ক্লায়েন্ট।

<html>
<head>
    <title>SOAP JavaScript Client Test</title>
    <script type="text/javascript">
        function soap() {
            var xmlhttp = new XMLHttpRequest();
            xmlhttp.open('POST', 'https://somesoapurl.com/', true);

            // build SOAP request
            var sr =
                '<?xml version="1.0" encoding="utf-8"?>' +
                '<soapenv:Envelope ' + 
                    'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' +
                    'xmlns:api="http://127.0.0.1/Integrics/Enswitch/API" ' +
                    'xmlns:xsd="http://www.w3.org/2001/XMLSchema" ' +
                    'xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">' +
                    '<soapenv:Body>' +
                        '<api:some_api_call soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">' +
                            '<username xsi:type="xsd:string">login_username</username>' +
                            '<password xsi:type="xsd:string">password</password>' +
                        '</api:some_api_call>' +
                    '</soapenv:Body>' +
                '</soapenv:Envelope>';

            xmlhttp.onreadystatechange = function () {
                if (xmlhttp.readyState == 4) {
                    if (xmlhttp.status == 200) {
                        alert(xmlhttp.responseText);
                        // alert('done. use firebug/console to see network response');
                    }
                }
            }
            // Send the POST request
            xmlhttp.setRequestHeader('Content-Type', 'text/xml');
            xmlhttp.send(sr);
            // send request
            // ...
        }
    </script>
</head>
<body>
    <form name="Demo" action="" method="post">
        <div>
            <input type="button" value="Soap" onclick="soap();" />
        </div>
    </form>
</body>
</html> <!-- typo -->

2
<সোপেনভ: শিরোনাম> প্রেরণ সম্পর্কে কী? আমি আমার শিরোনাম ট্যাগগুলিকে এসআর ভেরিয়েবলে তৈরি করার চেষ্টা করেছি, তবে সার্ভারটি একটি খালি সোপেনভ পেয়েছে: শিরোনাম
বয়লার বিল

এটি আমার পক্ষে কাজ করেছিল! (এসওএপি পরিষেবা URL টি বাস্তবের সাথে প্রতিস্থাপনের পরে এবং আমার ব্রাউজারে ক্রস-ডোমেন নিষেধাজ্ঞাগুলি বন্ধ করার পরে, যেমন @Prestaul দ্বারা বোঝানো হয়েছে)
নিকো বেলিক

আমি অ্যান্ড্রয়েড / আইওএসের নেটিসস্ক্রিপ্টে ক্রস-প্ল্যাটফর্ম অ্যাপটি বিকাশ করছি। আমি এসওএপি ওয়েব পরিষেবা ব্যবহার করতে চাই। একই জন্য আমাকে গাইড করুন। আমি উপরের কোডটি এসওএপি অনুরোধের জন্য ব্যবহার করেছি এবং আমি এসওএপি প্রতিক্রিয়া ফর্ম্যাট চাই, প্রতিক্রিয়া কীভাবে পরিচালনা করব। দয়া করে আমার প্রশ্নটি পর্যালোচনা করুন - স্ট্যাকওভারফ্লো.com
ওঙ্কার নেনে

উত্তরাধিকার কোডটি সমর্থন করার জন্য এটি সম্প্রতি ব্যবহার করতে হয়েছিল। অনুপস্থিত শিরোনামটি নিয়ে এমন একটি ইস্যুটি ছড়িয়ে গেল যা "এন্ডপয়েন্টডিসপ্যাচারে কনট্রাক্ট ফিল্টার অমিল" তৈরি করছিল। xmlhttp.setRequestHeader('SOAPAction', 'http://myurl.com/action');ঠিক করার আগে xmlhttp.send(sr)এটি যুক্ত করা হচ্ছে ।
আরডিআরিক

80

ব্রাউজারগুলি এক্সএমএলএইচটিটিপিআরকেস্ট পরিচালনা করার পদ্ধতিতে অনেকগুলি প্রশ্ন রয়েছে, এই জেএস কোডটি সমস্ত ব্রাউজারগুলিতে কাজ করবে:
https://github.com/ilinsky/xmlhttprequest

এই জেএস কোডটি এক্সএমএলটিকে জাভাস্ক্রিপ্ট অবজেক্টগুলি সহজে ব্যবহারে রূপান্তরিত করে:
http://www.terracoder.com/index.php/xml-objectifier

আপনার বাহ্যিক লাইব্রেরির প্রয়োজনীয়তা মেটাতে উপরের জেএস কোডটি পৃষ্ঠাতে অন্তর্ভুক্ত করা যেতে পারে।

var symbol = "MSFT"; 
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "http://www.webservicex.net/stockquote.asmx?op=GetQuote",true);
xmlhttp.onreadystatechange=function() {
 if (xmlhttp.readyState == 4) {
  alert(xmlhttp.responseText);
  // http://www.terracoder.com convert XML to JSON 
  var json = XMLObjectifier.xmlToJSON(xmlhttp.responseXML);
  var result = json.Body[0].GetQuoteResponse[0].GetQuoteResult[0].Text;
  // Result text is escaped XML string, convert string to XML object then convert to JSON object
  json = XMLObjectifier.xmlToJSON(XMLObjectifier.textToXML(result));
  alert(symbol + ' Stock Quote: $' + json.Stock[0].Last[0].Text); 
 }
}
xmlhttp.setRequestHeader("SOAPAction", "http://www.webserviceX.NET/GetQuote");
xmlhttp.setRequestHeader("Content-Type", "text/xml");
var xml = '<?xml version="1.0" encoding="utf-8"?>' +
 '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' +
                'xmlns:xsd="http://www.w3.org/2001/XMLSchema" ' +
                'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' + 
   '<soap:Body> ' +
     '<GetQuote xmlns="http://www.webserviceX.NET/"> ' +
       '<symbol>' + symbol + '</symbol> ' +
     '</GetQuote> ' +
   '</soap:Body> ' +
 '</soap:Envelope>';
xmlhttp.send(xml);
// ...Include Google and Terracoder JS code here...

অন্য দুটি বিকল্প:


আমি একাধিক খাম পাস করতে চাইলে আমার কী করা উচিত?
অজয় প্যাটেল

আমি উপরের কোডটি ব্যবহার করছি, তবে xmlhttp.responseText সর্বদা null.can হিসাবে ফলাফল দেয় আপনি ত্রুটি কাটিয়ে উঠতে আমাকে কিছু সংযোগ সরবরাহ করেন
user969275

গুগল কোড সরানো হয়ে যাওয়ার জন্য লিঙ্ক: github.com/ilinsky/xMLhttprequest
টোস্টিমাওলস

48

ওয়েব পৃষ্ঠাটি আপনার পৃষ্ঠার মতো একই ডোমেনে না থাকলে এটি সরাসরি জাভাস্ক্রিপ্ট দিয়ে করা যাবে না। সম্পাদনা করুন: ২০০৮ এবং আইই <10 এ সার্ভিসটি আপনার পৃষ্ঠার মতো একই ডোমেনে না থাকলে এটি সরাসরি জাভাস্ক্রিপ্ট দিয়ে করা যাবে না।

যদি ওয়েব পরিষেবাটি অন্য ডোমেনে থাকে [এবং আপনাকে IE <10] সমর্থন করতে হয় তবে আপনাকে নিজের ডোমেনে একটি প্রক্সি পৃষ্ঠা ব্যবহার করতে হবে যা ফলাফলগুলি পুনরুদ্ধার করবে এবং সেগুলি আপনাকে ফিরিয়ে দেবে। আপনার যদি পুরানো আইই সাপোর্টের প্রয়োজন না হয় তবে আপনার সার্ভিসে আপনাকে সিওআর সমর্থন যুক্ত করতে হবে। উভয় ক্ষেত্রেই, আপনার টাইমায়েটসের পরামর্শ অনুসারে এমন কিছু ব্যবহার করা উচিত কারণ আপনি নিজেরাই ফলাফলগুলি বিশ্লেষণ করতে চান না।

যদি ওয়েব পরিষেবাটি আপনার নিজের ডোমেনে থাকে তবে এসওএপি ব্যবহার করবেন না। এটি করার কোনও ভাল কারণ নেই। যদি ওয়েব পরিষেবাটি আপনার নিজের ডোমেনে থাকে তবে এটিকে সংশোধন করুন যাতে এটি JSON ফিরিয়ে দিতে পারে এবং এসওএপি-এর সাথে আসা সমস্ত ঝামেলা মোকাবেলার ঝামেলা থেকে নিজেকে বাঁচাতে পারে।

সংক্ষিপ্ত উত্তর: জাভাস্ক্রিপ্ট থেকে SOAP অনুরোধ করবেন না। অন্য ডোমেন থেকে ডেটা অনুরোধ করার জন্য একটি ওয়েব পরিষেবা ব্যবহার করুন এবং যদি আপনি এটি করেন তবে ফলাফলগুলি সার্ভার-সাইডে পার্স করুন এবং তাদেরকে জেএস বান্ধব আকারে ফিরিয়ে দিন।


1
উদ্দেশ্যটি হ'ল এসওএপি সার্ভারটিও সাধারণ পরীক্ষা ও মূল্যায়নের জন্য একটি HTML পৃষ্ঠা সরবরাহ করে। ক্লায়েন্ট একই ডোমেন হবে। সামনের প্রান্তের জন্য SOAP ব্যবহার না করা গ্রহণযোগ্য দর্শন বলে মনে হয়। কোন মন্তব্য কেন? দয়া করে নতুন প্রশ্নে যুক্ত করুন: stackoverflow.com/questions/127038
টমাস ব্র্যাট

1
সেখানে উত্তর দেওয়ার কোনও অর্থ নেই ... আমি তিনটি পয়েন্টেই গিজমোর সাথে একমত। এক্সএমএল স্ফীত এবং জেএসএন সংক্ষিপ্ত এবং নেটিভ থাকার সময় জেএসের সাথে পরিচালনা করার একটি চ্যালেঞ্জ।
Prestaul

10
পুনরায় "সম্পন্ন করা যায় না": ক্লায়েন্ট যদি ক্রস-অরিজিন রিসোর্স ভাগ করে নেওয়া সমর্থন করে তবে সরাসরি (বেশিরভাগ) সরাসরি জাভাস্ক্রিপ্ট দিয়ে এটি করা যায় । আশা করি ৩-৪ বছরে এটি সর্বজনীনভাবে উপলব্ধ হবে।
কনস্টান্টিন

2
@ কনস্টান্টিন, সিওআরএস এটির অনুমতি দেয় যদি আপনি কেবল নতুন ব্রাউজারগুলিকে সমর্থন করতে ইচ্ছুক হন এবং যদি আপনার সার্ভারের নিয়ন্ত্রণ থাকে এবং সেখানেও সিওআর সমর্থন যোগ করতে পারেন। বলা হচ্ছে, আমি এখনও তর্ক করব যে এসওএপি কলগুলি কেবল সার্ভারের মধ্যেই করা উচিত এবং ক্লায়েন্টকে জেএসওনের মতো আরও কিছু জেএস বান্ধব ব্যবহার করা উচিত।
Prestaul

1
@ নিকোবেলিক ব্রাউজার-ভিত্তিক ক্লায়েন্ট XMLHttpRequestসম্ভবত জ্যাকুরির মতো লাইব্রেরির মাধ্যমে ব্যবহার করতে পারে । একটি নোড ক্লায়েন্ট অন্য কিছু ব্যবহার করবে। বেশিরভাগ ওয়েব পরিষেবাদি তাদের এপিআই ডিজাইনের জন্য গাইড হিসাবে REST ব্যবহার করে তবে অনেকগুলি ভাল নিদর্শন রয়েছে। এখানে মূল কীটি হ'ল অনুরোধ / প্রতিক্রিয়া সংস্থাগুলি JSON কারণ জাভাস্ক্রিপ্ট ক্লায়েন্ট (ব্রাউজার / নোড / যেখানেই) JSON স্থানীয়ভাবে বোঝে।
Prestaul

14

আপনার জন্য কাজটি করতে jquery.soap প্লাগইন ব্যবহার করতে পারেন ।

এই স্ক্রিপ্টটি একটি এসওএপি এনভেলপ পাঠাতে $ .জ্যাক্স ব্যবহার করে। এটি এক্সএমএল ডোম, এক্সএমএল স্ট্রিং বা জেএসএনকে ইনপুট হিসাবে নিতে পারে এবং এক্সএমএল ডোম, এক্সএমএল স্ট্রিং বা জেএসওএন হিসাবে প্রতিক্রিয়াও ফিরে আসতে পারে।

সাইট থেকে ব্যবহারের উদাহরণ:

$.soap({
    url: 'http://my.server.com/soapservices/',
    method: 'helloWorld',

    data: {
        name: 'Remy Blom',
        msg: 'Hi!'
    },

    success: function (soapResponse) {
        // do stuff with soapResponse
        // if you want to have the response as JSON use soapResponse.toJSON();
        // or soapResponse.toString() to get XML string
        // or soapResponse.toXML() to get XML DOM
    },
    error: function (SOAPResponse) {
        // show error
    }
});

8

সেদিন থোমা

JSON সামনের শেষ ব্যবহারের জন্য পছন্দ করা হয় কারণ এটি জাভাস্ক্রিপ্ট। সুতরাং আপনার সাথে ডিল করার জন্য কোনও এক্সএমএল নেই। এসওএপি একটি লাইব্রেরি ব্যবহার না করেই ব্যথা। কেউ SOAPClient উল্লেখ করেছেন, যা একটি ভাল গ্রন্থাগার, আমরা এটি আমাদের প্রকল্পের জন্য শুরু করেছি। তবে এর কিছু সীমাবদ্ধতা ছিল এবং আমাদের এটির বিশাল অংশগুলি আবারও লিখতে হয়েছিল। এটি SOAPjs হিসাবে প্রকাশিত হয়েছে এবং সার্ভারে জটিল বস্তুগুলি পাস করার পক্ষে সমর্থন করে এবং অন্যান্য ডোমেনগুলি থেকে পরিষেবা গ্রহণের জন্য কিছু নমুনা প্রক্সি কোড অন্তর্ভুক্ত করে।


2
"জেএসওএন সামনের প্রান্তে ব্যবহারের জন্য পছন্দনীয় কারণ এটি জাভাস্ক্রিপ্ট।" - জেএসএন জাভাস্ক্রিপ্ট নয় । (এটি দেখতে কেবল জাভাস্ক্রিপ্টের মতো দেখাচ্ছে))
nnnnnn

2
en.wikedia.org/wiki/JSON - আক্ষরিক অর্থে "জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন" এর অর্থ দাঁড়ায়, এবং আমি যখন সম্মত হই যে জেএসওএন একটি ভাষা নয় এবং ততক্ষণে "জাভাস্ক্রিপ্ট নয়" এই সিদ্ধান্তের জন্য আপনাকে সম্মত হতে হবে যে নামটির নামকরণটি পারে সহজেই লোকদের বিভ্রান্ত।
পি। রো

8

কেউ কি এই চেষ্টা করেছে? https://github.com/doedje/jquery.soap

বাস্তবায়ন করা খুব সহজ বলে মনে হচ্ছে।

উদাহরণ:

$.soap({
url: 'http://my.server.com/soapservices/',
method: 'helloWorld',

data: {
    name: 'Remy Blom',
    msg: 'Hi!'
},

success: function (soapResponse) {
    // do stuff with soapResponse
    // if you want to have the response as JSON use soapResponse.toJSON();
    // or soapResponse.toString() to get XML string
    // or soapResponse.toXML() to get XML DOM
},
error: function (SOAPResponse) {
    // show error
}
});

ফলাফল হবে

<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <helloWorld>
        <name>Remy Blom</name>
        <msg>Hi!</msg>
    </helloWorld>
  </soap:Body>
</soap:Envelope>

4
<html>
 <head>
    <title>Calling Web Service from jQuery</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $("#btnCallWebService").click(function (event) {
                var wsUrl = "http://abc.com/services/soap/server1.php";
                var soapRequest ='<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">   <soap:Body> <getQuote xmlns:impl="http://abc.com/services/soap/server1.php">  <symbol>' + $("#txtName").val() + '</symbol>   </getQuote> </soap:Body></soap:Envelope>';
                               alert(soapRequest)
                $.ajax({
                    type: "POST",
                    url: wsUrl,
                    contentType: "text/xml",
                    dataType: "xml",
                    data: soapRequest,
                    success: processSuccess,
                    error: processError
                });

            });
        });

        function processSuccess(data, status, req) { alert('success');
            if (status == "success")
                $("#response").text($(req.responseXML).find("Result").text());

                alert(req.responseXML);
        }

        function processError(data, status, req) {
        alert('err'+data.state);
            //alert(req.responseText + " " + status);
        } 

    </script>
</head>
<body>
    <h3>
        Calling Web Services with jQuery/AJAX
    </h3>
    Enter your name:
    <input id="txtName" type="text" />
    <input id="btnCallWebService" value="Call web service" type="button" />
    <div id="response" ></div>
</body>
</html>

শুনুন উদাহরণস্বরূপ এসওএপি টিউটোরিয়াল সহ সেরা জাভাস্ক্রিপ্ট।

http://www.codeproject.com/Articles/12816/JavaScript-SOAP-Client


3

কয়েকটি দুর্দান্ত উদাহরণ (এবং একটি রেডিমেড জাভাস্ক্রিপ্ট এসওএপি ক্লায়েন্ট!) এখানে রয়েছে: http://plugins.jquery.com/soap/

রিডমি চেক করুন এবং একই-উত্সযুক্ত ব্রাউজারের সীমাবদ্ধতা থেকে সাবধান থাকুন।


3

জাভাস্ক্রিপ্ট -> তালিকা বি দিয়ে সহজেই এসওএপি ওয়েব পরিষেবা গ্রহণ করুন

function fncAddTwoIntegers(a, b)
{
    varoXmlHttp = new XMLHttpRequest();
    oXmlHttp.open("POST",
 "http://localhost/Develop.NET/Home.Develop.WebServices/SimpleService.asmx'",
 false);
    oXmlHttp.setRequestHeader("Content-Type", "text/xml");
    oXmlHttp.setRequestHeader("SOAPAction", "http://tempuri.org/AddTwoIntegers");
    oXmlHttp.send(" \
<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' \
xmlns:xsd='http://www.w3.org/2001/XMLSchema' \
 xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'> \
  <soap:Body> \
    <AddTwoIntegers xmlns='http://tempuri.org/'> \
      <IntegerOne>" + a + "</IntegerOne> \
      <IntegerTwo>" + b + "</IntegerTwo> \
    </AddTwoIntegers> \
  </soap:Body> \
</soap:Envelope> \
");
    return oXmlHttp.responseXML.selectSingleNode("//AddTwoIntegersResult").text;
}

এটি আপনার সমস্ত প্রয়োজনীয়তা পূরণ করতে পারে না তবে এটি আসলে আপনার প্রশ্নের উত্তর দেওয়ার শুরু। (আমি অ্যাক্টিভএক্সবজেক্ট ("এমএসএক্সএমএল 2. এক্সএমএলএইচটিটিপি") এর জন্য এক্সএমএলএইচটিপিআরকিউয়েস্ট () স্যুইচ করেছি )।


1

সবচেয়ে সহজ উদাহরণটি সমন্বিত থাকবে:

  1. ব্যবহারকারী ইনপুট পাচ্ছেন।
  2. এটির অনুরূপ এক্সএমএল এসওএপি বার্তাটি রচনা করা

    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body>
        <GetInfoByZIP xmlns="http://www.webserviceX.NET">
          <USZip>string</USZip>
        </GetInfoByZIP>
      </soap:Body>
    </soap:Envelope>
  3. এক্সএইচআর ব্যবহার করে ওয়েব সার্ভিস url এ বার্তা পোস্ট করা P

  4. এটির অনুরূপ ওয়েবসার্চির এক্সএমএল সোপ প্রতিক্রিয়া পার্স করা

    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema">
     <soap:Body>
      <GetInfoByZIPResponse xmlns="http://www.webserviceX.NET">
       <GetInfoByZIPResult>
        <NewDataSet xmlns="">
         <Table>
          <CITY>...</CITY>
          <STATE>...</STATE>
          <ZIP>...</ZIP>
          <AREA_CODE>...</AREA_CODE>
          <TIME_ZONE>...</TIME_ZONE>
         </Table>
        </NewDataSet>
       </GetInfoByZIPResult>
      </GetInfoByZIPResponse>
     </soap:Body>
    </soap:Envelope>
  5. ব্যবহারকারীর কাছে ফলাফল উপস্থাপন করা।

তবে এটি বাহ্যিক জাভাস্ক্রিপ্ট লাইব্রেরি ছাড়া অনেক ঝামেলা।


9
জাভাক্রিপ্টের উদাহরণ নয়।
থমাস ব্র্যাট

এমনকি প্রথম অংশটিও আপনি উত্তর করেননি - কার্যক্ষম থাকুন (অন্য কথায় আসলে কাজ করুন)।
শাহহার ওড়াদ

0
function SoapQuery(){
  var namespace = "http://tempuri.org/";
  var site = "http://server.com/Service.asmx";
  var xmlhttp = new ActiveXObject("Msxml2.ServerXMLHTTP.6.0");
  xmlhttp.setOption(2,  13056 );  /* if use standard proxy */
  var args,fname =  arguments.callee.caller.toString().match(/ ([^\(]+)/)[1]; /*Имя вызвавшей ф-ции*/
  try { args =   arguments.callee.caller.arguments.callee.toString().match(/\(([^\)]+)/)[1].split(",");  
    } catch (e) { args = Array();};
  xmlhttp.open('POST',site,true);  
  var i, ret = "", q = '<?xml version="1.0" encoding="utf-8"?>'+
   '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'+
   '<soap:Body><'+fname+ ' xmlns="'+namespace+'">';
  for (i=0;i<args.length;i++) q += "<" + args[i] + ">" + arguments.callee.caller.arguments[i] +  "</" + args[i] + ">";
  q +=   '</'+fname+'></soap:Body></soap:Envelope>';
            // Send the POST request
            xmlhttp.setRequestHeader("MessageType","CALL");
            xmlhttp.setRequestHeader("SOAPAction",namespace + fname);
            xmlhttp.setRequestHeader('Content-Type', 'text/xml');
            //WScript.Echo("Запрос XML:" + q);
            xmlhttp.send(q);
     if  (xmlhttp.waitForResponse(5000)) ret = xmlhttp.responseText;
    return ret;
  };





function GetForm(prefix,post_vars){return SoapQuery();};
function SendOrder2(guid,order,fio,phone,mail){return SoapQuery();};

function SendOrder(guid,post_vars){return SoapQuery();};

0

XMLHttpRequest এ অ্যাঙ্গুলারজস $ এইচটিপি র‌্যাপ বেস । যতক্ষণ না শিরোনামের কন্টেন্ট সেট হিসাবে নিম্নলিখিত কোডটি করবে।

"Content-Type": "text/xml; charset=utf-8"

উদাহরণ স্বরূপ:

function callSoap(){
var url = "http://www.webservicex.com/stockquote.asmx";
var soapXml = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"http://www.webserviceX.NET/\"> "+
         "<soapenv:Header/> "+
         "<soapenv:Body> "+
         "<web:GetQuote> "+
         "<web:symbol></web:symbol> "+
         "</web:GetQuote> "+
         "</soapenv:Body> "+
         "</soapenv:Envelope> ";

    return $http({
          url: url,  
          method: "POST",  
          data: soapXml,  
          headers: {  
              "Content-Type": "text/xml; charset=utf-8"
          }  
      })
      .then(callSoapComplete)
      .catch(function(message){
         return message;
      });

    function callSoapComplete(data, status, headers, config) {
        // Convert to JSON Ojbect from xml
        // var x2js = new X2JS();
        // var str2json = x2js.xml_str2json(data.data);
        // return str2json;
        return data.data;

    }

}

0

প্রশ্নটি হল 'জাভাস্ক্রিপ্ট ব্যবহার করে সবচেয়ে সহজ সোপ উদাহরণটি কী?'

এই উত্তরটি ব্রাউজারের পরিবর্তে নোড.জেএস পরিবেশে একটি উদাহরণ । (আসুন স্ক্রিপ্টটির নাম রাখুন সাবান-নোড.জেএস) এবং আমরা কোনও নিবন্ধের রেফারেন্স তালিকা পেতে উদাহরণ হিসাবে ইউরোপ পিএমসি থেকে পাবলিক এসওএপি ওয়েব পরিষেবা ব্যবহার করব ।

const XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
const DOMParser = require('xmldom').DOMParser;

function parseXml(text) {
    let parser = new DOMParser();
    let xmlDoc = parser.parseFromString(text, "text/xml");
    Array.from(xmlDoc.getElementsByTagName("reference")).forEach(function (item) {
        console.log('Title: ', item.childNodes[3].childNodes[0].nodeValue);
    });

}

function soapRequest(url, payload) {
    let xmlhttp = new XMLHttpRequest();
    xmlhttp.open('POST', url, true);

    // build SOAP request
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4) {
            if (xmlhttp.status == 200) {
                parseXml(xmlhttp.responseText);
            }
        }
    }

    // Send the POST request
    xmlhttp.setRequestHeader('Content-Type', 'text/xml');
    xmlhttp.send(payload);
}

soapRequest('https://www.ebi.ac.uk/europepmc/webservices/soap', 
    `<?xml version="1.0" encoding="UTF-8"?>
    <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Header />
    <S:Body>
        <ns4:getReferences xmlns:ns4="http://webservice.cdb.ebi.ac.uk/"
            xmlns:ns2="http://www.scholix.org"
            xmlns:ns3="https://www.europepmc.org/data">
            <id>C7886</id>
            <source>CTX</source>
            <offSet>0</offSet>
            <pageSize>25</pageSize>
            <email>ukpmc-phase3-wp2b---do-not-reply@europepmc.org</email>
        </ns4:getReferences>
    </S:Body>
    </S:Envelope>`);

কোডটি চালানোর আগে আপনাকে দুটি প্যাকেজ ইনস্টল করতে হবে:

npm install xmlhttprequest
npm install xmldom

এখন আপনি কোডটি চালাতে পারেন:

node soap-node.js

এবং আপনি নীচে হিসাবে আউটপুট দেখতে পাবেন:

Title:  Perspective: Sustaining the big-data ecosystem.
Title:  Making proteomics data accessible and reusable: current state of proteomics databases and repositories.
Title:  ProteomeXchange provides globally coordinated proteomics data submission and dissemination.
Title:  Toward effective software solutions for big biology.
Title:  The NIH Big Data to Knowledge (BD2K) initiative.
Title:  Database resources of the National Center for Biotechnology Information.
Title:  Europe PMC: a full-text literature database for the life sciences and platform for innovation.
Title:  Bio-ontologies-fast and furious.
Title:  BioPortal: ontologies and integrated data resources at the click of a mouse.
Title:  PubMed related articles: a probabilistic topic-based model for content similarity.
Title:  High-Impact Articles-Citations, Downloads, and Altmetric Score.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.