使用SOAP與TrinityCore交互(待定)

原文:SOAP with TrinityCore | TrinityCore MMo Project Wiki

?

如何使用SOAP與TC交互

SOAP代表簡單對象訪問協議,是一種類似于REST的基于標準的web服務訪問協議的舊形式。只要必要的配置到位,您就可以利用SOAP向TrinityCore服務器發送命令。
理解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代理。但是,這不在本指南的范圍內,將不包括在內。

用于原型制作的HTTP客戶端


有一些客戶端可以快速建立連接并測試控制臺命令:
postman:https://www.postman.com/(網絡、桌面代理/客戶端)
insomnia:https://insomnia.rest/
夜鶯nightingale:https://nightingale.rest/
它們都提供了各種各樣的細節,但最終的工作原理大致相同。感謝Jackpoz為Postman提供的具體步驟-https://www.postman.com/.
Postman有兩種風格:web界面(以及可以安裝以執行localhost請求的代理)和完全客戶端桌面應用程序。這兩種情況下的說明是相同的。
在“我的工作區”下,找到“導入”按鈕。您將使用原始文本選項。
將以下JSON復制并粘貼到文本框中。請確保將item.request.auth.basic下的憑據更新為前面提到的GM用戶。

{"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\"?>\r\n<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ns1=\"urn:TC\">\r\n<SOAP-ENV:Body>\r\n<ns1:executeCommand>\r\n<command>server info</command>\r\n</ns1:executeCommand>\r\n</SOAP-ENV:Body>\r\n</SOAP-ENV:Envelope>","options": {"raw": {"language": "xml"}}},"url": "http://127.0.0.1:7878"},"response": []}]
}

您應該將TC SOAP視為要導入的集合。單擊“導入”。
這將使用正確的HTTP方法(POST)以及“授權”和“正文”選項卡下的詳細信息填充新集合。
在Body選項卡下,注意XML負載和為您預先填充的服務器信息命令。
單擊“發送”按鈕將提交請求,并提供XML響應。
在Postman界面的右側,一個</>符號將打開代碼片段,可以將請求轉換為您選擇的語言。
?使用PHP
要使用PHP與TrinityCore交互,您需要確保安裝了PHP-soap擴展。還要確保您使用的是仍在積極支持的PHP版本。代碼示例在PHP7.4到PHP8.1上進行了測試。
在所有這些示例中,urn:TC URI都是必需的參數,因為我們沒有提供WSDL文檔。
SoapClient-https://www.php.net/manual/en/class.soapclient.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;

Note that we are passing a HTTP basic authorization header with base64 encoded username and password (separated by a colon). Alternatively, you could omit the?stream_context?parameter, and instead include a (login) username and password in your SoapClient configuration.

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

Either approach is fine - but don't be fooled! Base 64 encoding does not inherently make it more secure.

Remember that the SOAP client can only recognize failures to connect, or misconfigurations.?It will not know if you've provided an invalid command. So it's up to you to parse the results and decide if the intended result was a success or not. Output will be just as if you performed the command on the console.

Lastly, if you'd rather not rely on the SOAP extension or client, you can form the XML payload and parse the resulting XML response yourself. You'll still need the?cURL extension, but this is usually available if not enabled by default.

<?xml version="1.0" encoding="utf-8"?>
<SOAP-ENV:Envelopexmlns: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 aboveCURLOPT_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;

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/45206.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/45206.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/45206.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Open3D 計算點云配準的精度和重疊度

目錄 一、概述 1.1計算配準精度 1.2計算點云重疊度 二、代碼實現 2.1關鍵函數 2.2完整代碼 三、實現效果 3.1原始點云 3.2計算結果 一、概述 在點云配準中,精度和重疊度是兩個重要的評價指標。精度通常用均方根誤差(RMSE)來衡量,而重疊度則表示兩個點云在…

centos環境啟動/重啟java服務腳本優化

centos環境啟動/重啟java服務腳本優化 引部分命令說明根據端口查詢服務進程殺死進程函數腳本接收參數 腳本注意重啟文檔位置異常 引 在離線環境部署的多個java應用組成的系統&#xff0c;測試階段需要較為頻繁的發布&#xff0c;因資源限制&#xff0c;沒有弄devops或CICD那套…

華為手機聯系人不見了怎么恢復?3個解決方案

華為手機聯系人列表就像是我們精心編織的社交網絡之網。然而&#xff0c;有時&#xff0c;這張網可能會因為各種原因而意外破損&#xff0c;聯系人信息消失得無影無蹤&#xff0c;讓我們陷入“人脈孤島”的困境。華為手機聯系人不見了怎么恢復&#xff1f;別擔心&#xff0c;我…

構建高質量數據集與智能數據工程平臺:播客AI Odyssey深度對話實錄

對話整數智能聯創和前IDEA研究員&#xff1a;構建高質量數據集與智能數據工程平臺 - AI Odyssey | 小宇宙 - 聽播客&#xff0c;上小宇宙 人工智能技術的日益深遠發展&#xff0c;對人工智能的性能提升與技術迭代提出了新的要求。在大模型訓練中&#xff0c;已有的研究和實踐表…

【操作系統】進程管理——用信號量機制解決問題,以生產者-消費者問題為例(個人筆記)

學習日期&#xff1a;2024.7.10 內容摘要&#xff1a;利用信號量機制解決幾個經典問題模型 目錄 引言 問題模型 生產者-消費者問題&#xff08;經典&#xff09; 多生產者-多消費者問題 吸煙者問題 讀者寫者問題&#xff08;難點&#xff09; 哲學家進餐問題&#xff0…

解決POST請求中文亂碼問題

解決POST請求中文亂碼問題 1、亂碼原因2、解決方法3、具體步驟 &#x1f496;The Begin&#x1f496;點點關注&#xff0c;收藏不迷路&#x1f496; 在Web開發中&#xff0c;處理POST請求時經常遇到中文亂碼問題&#xff0c;這主要是由于服務器在接收到POST請求的數據后&#x…

物聯網時代的等保測評:保障萬物互聯的安全

隨著物聯網&#xff08;IoT&#xff09;技術的飛速發展&#xff0c;我們的生活正逐漸進入一個萬物互聯的新時代。從智能家居到智慧城市&#xff0c;從無人駕駛到農業物聯網&#xff0c;IoT技術正在滲透到我們生活的方方面面。然而&#xff0c;隨著IoT設備數量的激增&#xff0c…

BUG解決:postman可以請求成功,但Python requests請求報403

目錄 問題背景 問題定位 問題解決 問題背景 使用Python的requests庫對接物聯數據的接口之前一直正常運行&#xff0c;昨天突然請求不通了&#xff0c;通過進一步驗證發現凡是使用代碼調用接口就不通&#xff0c;而使用postman就能調通&#xff0c;請求參數啥的都沒變。 接口…

SSL 證書錯誤:如何修復以及錯誤發生的原因

SSL證書可以提升網站的可信度。然而&#xff0c;如果您的SSL證書出現錯誤&#xff0c;您可能會得到一個“不安全”的標簽&#xff0c;這可能會導致訪問者失去對您網站的信任并轉向競爭對手。 本文將介紹SSL證書錯誤的原因及其對用戶的潛在影響。隨后&#xff0c;我們將提供詳細…

MybatisPlus 核心功能

MybatisPlus 核心功能 文章目錄 MybatisPlus 核心功能1. 條件構造器1.1 QueryWrapper1.2 LambdaQueryWrapper&#xff08;推薦&#xff09;1.3 UpdateWrapper1.4 LambdaUpdateWrapper 2. 自定義SQL3. Service接口 1. 條件構造器 當涉及到查詢或修改語句時&#xff0c;MybatisP…

界面組件Kendo UI for React 2024 Q2亮點 - 生成式AI集成、設計系統增強

隨著最新的2024年第二季度發布&#xff0c;Kendo UI for React為應用程序開發設定了標準&#xff0c;包括生成式AI集成、增強的設計系統功能和可訪問的數據可視化。新的2024年第二季度版本為應用程序界面提供了人工智能(AI)提示&#xff0c;從設計到代碼的生產力增強、可訪問性…

Java畢業設計 基于SSM vue圖書管理系統小程序 微信小程序

Java畢業設計 基于SSM vue圖書管理系統小程序 微信小程序 SSM 圖書管理系統小程序 功能介紹 用戶 登錄 注冊 首頁 圖片輪播 圖書信息推薦 圖書詳情 贊 踩 評論 收藏 系統公告 公告詳情 用戶信息修改 我的待還 圖書歸還 催還提醒 我的收藏管理 意見反饋 管理員 登錄 個人中心…

絕地求生PUBG奇幻大亂斗怎么玩 奇幻大亂斗什么時候回歸

《絕地求生》(PUBG) 是由韓國開發的一款戰術競技型射擊類沙盒游戲&#xff0c;游戲中我們需要和隊友組隊乘坐飛機跳傘到達一座空島&#xff0c;之后我們需要搜索一切我們可以用到的物資&#xff0c;之后我們于敵人進行對戰&#xff0c;期間不斷躲避毒圈的追擊&#xff0c;最后當…

python(餐廳點餐系統)

全部代碼&#xff1a; meau_lis[[1,"牛排",50],[2,"羊排",80],[3,"大盤雞",50],[4,"火鍋雞",68],[5,"豬大骨",35],[6,"米飯",2],[7,"壽司",5],[8,"大餅",6],[9,"小米粥",1],[10,&…

深入理解MySQL中的EXPLAIN及type列

在MySQL中&#xff0c;EXPLAIN是一個強大的工具&#xff0c;它可以幫助我們理解SQL查詢的執行計劃。通過使用EXPLAIN&#xff0c;我們可以獲取到查詢的詳細信息&#xff0c;包括如何執行查詢&#xff0c;以及查詢的各個部分如何連接在一起。在本篇博客中&#xff0c;我們將重點…

Redis+Caffeine 實現兩級緩存實戰

RedisCaffeine 實現兩級緩存 背景 ? 事情的開始是這樣的&#xff0c;前段時間接了個需求&#xff0c;給公司的商城官網提供一個查詢預計送達時間的接口。接口很簡單&#xff0c;根據請求傳的城市倉庫發貨時間查詢快遞的預計送達時間。因為商城下單就會調用這個接口&#xff…

防火墻安全策略及用戶認證實驗

目錄 一、實驗拓撲 二、實驗要求 三、實驗思路 四、實驗配置 1、配置vlan 2、配置路由器、防火墻IP地址&#xff0c;劃分區域 3、配置安全策略 ?策略一&#xff1a; 策略二&#xff1a; 策略三&#xff1a; 4、配置用戶認證 策略一&#xff1a; 策略二&#xff1a…

視覺SLAM與定位之一前端特征點及匹配

視覺SLAM中的特征點及匹配 參考文章或鏈接特征點性能的評估傳統特征點和描述子&#xff08;僅特征點或者特征點描述子&#xff09;傳統描述子 基于深度學習的特征點基于深度學習的描述子基于深度學習的特征點描述子特征匹配 參考文章或鏈接 Image Matching from Handcrafted t…

WebGIS基礎原理

該部分內容與部分插圖、學習框架的主要參考的網站與博主如下&#xff08;也趁機分享給大家&#xff09;&#xff1a; OSGeo開源WebGIS在線教程&#xff1a;http://webgis.cn/ OSGeo《地理信息系統原理》&#xff1a;https://www.osgeo.cn/gis-tutorial/index.html OSGeo《Pyth…

DSC主備歸檔報錯

先看一個報錯&#xff1a; 2024-07-10 22:12:21.725 [ERROR] database P0000003511 T0000000000000003696 rafil_list_overlap_consecutive_check failed, rfil(DMDATA/data/DSC02/arch/ARCHIVE_LOCAL1_0x57843343_EP1_2024-07-10_20-44-40.log)->next_seq(2901) > nex…