2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
SOAP इत्यस्य अर्थः Simple Object Access Protocol इति भवति तथा च REST इत्यस्य सदृशस्य मानक-आधारित-जाल-सेवा-प्रवेश-प्रोटोकॉलस्य प्राचीनरूपम् अस्ति । यावत् आवश्यकं विन्यासः स्थाने अस्ति, तावत् भवन्तः TrinityCore सर्वरं प्रति आदेशान् प्रेषयितुं SOAP इत्यस्य लाभं ग्रहीतुं शक्नुवन्ति ।
SOAP इत्यस्य अवगमनस्य एकः उत्तमः उपायः अस्ति यत् तस्य तुलना समकालीन REST इत्यनेन सह करणीयम् । निम्नलिखितलेखः एतत् अतीव सम्यक् व्याख्यायते – https://smartbear.com/blog/soap-vs-rest-whats-the-difference/।
द्वयोः मुख्यः अन्तरः अस्ति यत् SOAP प्रतिक्रियाः प्रदातुं पेलोड् स्वीकुर्वितुं च पूर्णतया XML इत्यस्य उपरि अवलम्बते । PHP इत्यनेन एतां प्रक्रियां सुलभं कर्तुं केचन पद्धतयः प्रदाति, परन्तु भवतः उपयोगप्रकरणस्य आधारेण भवतः XML इत्यनेन परिचितः भवितुम् आवश्यकः भवितुम् अर्हति ।
worldserver.conf
विन्याससञ्चिकायां सेटिङ्ग्स् सम्यक् सेट् कृताः इति सुनिश्चितं कुर्वन्तु ।
- # SOAP.Enable
- # Description: Enable soap service.
- # Default: 0 - (Disabled)
- # 1 - (Enabled)
- SOAP.Enabled = 1
-
- # SOAP.IP
- # Description: Bind SOAP service to IP/hostname.
- # Default: "127.0.0.1" - (Bind to localhost)
- SOAP.IP = "127.0.0.1"
-
- # SOAP.Port
- # Description: TCP port to reach the SOAP service.
- # Default: 7878
- SOAP.Port = 7878
भवतः विशिष्टं RBAC अभिगमविन्यासं दृष्ट्वा, भवतः GM आदेशानां उपयोगाय अनुमतिभिः सह उपयोक्तृलेखस्य अपि आवश्यकता भविष्यति । एकेन व्यक्तिना उपयुज्यमानं न तु अस्य प्रयोजनार्थं विशेषतया सीमित-प्रवेश-खातं निर्मातुं सद्विचारः भवेत् ।
नोटः- लेखनसमये TC 335a केवलं HTTP समर्थयति, अतः सावधानाः भवन्तु यत् एतत् प्रकारेण रहस्यं (गुप्तशब्दाः इत्यादयः) न प्रेषयन्तु । यत्किमपि पारितं तत् स्पष्टपाठे, केनापि पठितुं शक्यते इति कल्प्यते ।
यदि भवान् SOAP मार्गेण दूरस्थरूपेण संयोजनं कर्तुं योजनां करोति तर्हि सुरक्षितं संयोजनं सुनिश्चित्य निश्चितरूपेण पदानि स्वीकुर्वीत । एकः सम्भाव्यः उपायः apache अथवा nginx इत्यस्य माध्यमेन विपरीत SSL प्रॉक्सी इत्यस्य माध्यमेन अस्ति । परन्तु एतत् अस्य मार्गदर्शकस्य व्याप्तेः बहिः अस्ति, न च समाविष्टं भविष्यति ।
शीघ्रं संयोजनं स्थापयितुं तथा च कन्सोल् आदेशान् परीक्षितुं क्लायन्ट् सन्ति:
डाकपालः https://www.postman.com/ (जालम्, डेस्कटॉप एजेण्टः/ग्राहकः)
अनिद्रा:https://insomnia.rest/
नाइटिङ्गल नाइटिंगेलः https://nightingale.rest/
ते सर्वे विविधविवरणानि प्रददति, परन्तु अन्ते मोटेन समानं कार्यं कुर्वन्ति । Postman - https://www.postman.com/ - कृते विशिष्टानि चरणानि प्रदत्तवान् Jackpoz -महोदयाय धन्यवादः ।
Postman द्वयोः स्वादयोः भवति: एकः जाल-अन्तरफलकः (तथा च एकः प्रॉक्सी यः localhost अनुरोधं कर्तुं संस्थाप्यते) तथा च एकः पूर्णः क्लायन्ट् डेस्कटॉप् अनुप्रयोगः । उभयथापि निर्देशाः समानाः सन्ति ।
"My Workspace" इत्यस्य अधः "Import" इति बटन् अन्वेष्टुम् । भवान् मूलपाठविकल्पस्य उपयोगं करिष्यति ।
निम्नलिखित JSON प्रतिलिपिं कृत्वा पाठपेटिकायां चिनोतु । कृपया पूर्वं उल्लिखितस्य GM उपयोक्तुः कृते item.request.auth.basic इत्यस्य अधः प्रमाणपत्राणि अद्यतनीकर्तुं सुनिश्चितं कुर्वन्तु ।
- {
- "info": {
- "name": "TC SOAP",
- "schema": "https://schema.getpostman.com/json/collection/v2.0.0/collection.json"
- },
- "item": [
- {
- "name": "server info",
- "request": {
- "auth": {
- "type": "basic",
- "basic": {
- "username": "CHANGEME",
- "password": "CHANGEME",
- "showPassword": false
- }
- },
- "method": "POST",
- "header": [],
- "body": {
- "mode": "raw",
- "raw": "<?xml version="1.0" encoding="utf-8"?>rn<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:TC">rn<SOAP-ENV:Body>rn<ns1:executeCommand>rn<command>server info</command>rn</ns1:executeCommand>rn</SOAP-ENV:Body>rn</SOAP-ENV:Envelope>",
- "options": {
- "raw": {
- "language": "xml"
- }
- }
- },
- "url": "http://127.0.0.1:7878"
- },
- "response": []
- }
- ]
- }
भवद्भिः TC SOAP इत्येतत् आयातार्थं संग्रहरूपेण चिन्तनीयम् । Import इत्यत्र क्लिक् कुर्वन्तु ।
एतेन नूतनसङ्ग्रहः समीचीन HTTP पद्धत्या (POST) तथा च Authorization तथा Body ट्याब्स् इत्यस्य अधः विवरणं पूरयिष्यति ।
Body ट्याब् इत्यस्य अधः XML पेलोड् तथा सर्वर सूचना आदेशान् अवलोकयन्तु ये भवतः कृते पूर्वं जनिताः सन्ति ।
"Send" इति बटन् नुदनेन अनुरोधः प्रस्तूयते, XML प्रतिक्रिया च प्राप्यते ।
Postman अन्तरफलकस्य दक्षिणभागे क</> symbol एकं कोडस्निपेट् उद्घाटयिष्यति यत् अनुरोधं भवतः पसन्दस्य भाषायां परिवर्तयितुं शक्नोति ।
¶PHP इत्यस्य उपयोगः
PHP इत्यस्य उपयोगेन TrinityCore इत्यनेन सह अन्तरक्रियां कर्तुं भवद्भिः सुनिश्चितं कर्तव्यं यत् भवतां PHP-soap विस्तारः संस्थापितः अस्ति । अपि च सुनिश्चितं कुर्वन्तु यत् भवान् PHP इत्यस्य संस्करणं उपयुङ्क्ते यत् अद्यापि सक्रियरूपेण समर्थितम् अस्ति । कोड् उदाहरणानि PHP7.4 तः PHP8.1 पर्यन्तं परीक्षितानि आसन् ।
एतेषु सर्वेषु उदाहरणेषु urn:TC URI आवश्यकः पैरामीटर् अस्ति यतोहि वयं WSDL दस्तावेजं न प्रदत्तवन्तः ।
साबुनग्राहक-https://www.php.net/manual/hi/वर्ग.साबुनग्राहक.php
- $command = 'server info';
-
- $opts = [
- 'http' => [
- 'header' => "Authorization: Basic " . base64_encode("USERNAME:PASSWORD")
- ]];
-
- $client = new SoapClient($wsdl = null, [
- 'stream_context' => stream_context_create($opts),
- 'location' => 'http://127.0.0.1:7878',
- 'uri' => 'urn:TC',
- ]);
-
- try {
- $result = $client->executeCommand(new SoapParam($command, 'command'));
- } catch (Exception $e) {
- die($e->getMessage());
- }
-
- echo $result;
ध्यानं कुर्वन्तु यत् वयं base64 एन्कोडेड् उपयोक्तृनाम गुप्तशब्दं च (कोलनेन पृथक्कृतम्) सह HTTP मूलभूतं प्राधिकरणशीर्षकं पारयामः । वैकल्पिकरूपेण, भवन्तःstream_context
पैरामीटर्, तथा च तस्य स्थाने स्वस्य SoapClient विन्यासे (प्रवेश) उपयोक्तृनाम गुप्तशब्दं च समाविष्टं कुर्वन्तु ।
- $command = 'server info';
-
- $client = new SoapClient($wsdl = null, [
- 'location' => 'http://127.0.0.1:7878',
- 'uri' => 'urn:TC',
- 'login' => 'USERNAME',
- 'password' => 'PASSWORD',
- ]);
-
- try {
- $result = $client->executeCommand(new SoapParam($command, 'command'));
- } catch (Exception $e) {
- die($e->getMessage());
- }
-
- echo $result;
उपायः अपि सुष्ठु अस्ति - परन्तु मूर्खता मा भवतु! आधार ६४ एन्कोडिंग् स्वभावतः अधिकं सुरक्षितं न करोति ।
स्मर्यतां यत् SOAP क्लायन्ट् केवलं संयोजयितुं विफलतां, अथवा दुर्विन्यासान् ज्ञातुं शक्नोति ।भवता अमान्य आदेशः प्रदत्तः वा इति न ज्ञास्यति . अतः परिणामान् विश्लेषणं कृत्वा अभिप्रेतं परिणामं सफलम् अभवत् वा न वा इति निर्णयं कर्तुं भवतः कार्यम् अस्ति । आउटपुट् यथा भवता कन्सोल् मध्ये आदेशः कृतः तथा भविष्यति ।
अन्तिमे, यदि भवान् SOAP विस्तारस्य अथवा क्लायन्ट् इत्यस्य उपरि अवलम्बितुं न इच्छति तर्हि भवान् XML पेलोड् निर्मातुं शक्नोति तथा च परिणामितं XML प्रतिक्रियां स्वयमेव विश्लेषणं कर्तुं शक्नोति । भवतः अद्यापि आवश्यकता भविष्यतिcURL विस्तारः, परन्तु एतत् प्रायः उपलभ्यते यदि पूर्वनिर्धारितरूपेण सक्षमं न भवति ।
- <?xml version="1.0" encoding="utf-8"?>
- <SOAP-ENV:Envelope
- xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
- xmlns:ns1="urn:TC">
- <SOAP-ENV:Body>
- <ns1:executeCommand>
- <command>server info</command>
- </ns1:executeCommand>
- </SOAP-ENV:Body>
- </SOAP-ENV:Envelope>
- $curl = curl_init();
-
- curl_setopt_array($curl, [
- CURLOPT_POSTFIELDS => $payload, // $payload is the XML provided above
- CURLOPT_URL => 'http://127.0.0.1:7878',
- CURLOPT_TIMEOUT => 0,
- CURLOPT_CUSTOMREQUEST => 'POST',
- CURLOPT_HTTPHEADER => [
- "Authorization: Basic " . base64_encode("{$user}:{$pass}"),
- 'Content-Type: application/xml',
- ],
- ]);
-
- $response = curl_exec($curl);
- curl_close($curl);
- echo $response;