Technology sharing

Interacting cum TrinityCore utens SOAP (TBD)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

original: SOAP with TrinityCore | TrinityCore MMo Project Wiki

 

Quomodo cum TC penitus utens SOAP

SOAP stands for Simplex Object Access Protocollum et antiquior forma signorum substructio muneris interretialis accessus protocollo similis QUIETIS. Quamdiu necessariae figurae in loco sunt, pressionibus SOAP imperare potes mittere ad server Core Trinitati.
Viam bonam ad intellegendum SOAP est comparare TEMPORE RELICUM. Articulus sequens optime hoc explicat – https://smartbear.com/blog/soap-vs-rest-whats-the-difference/.
Praecipua differentia inter utrumque est quod SOAP tota in XML nititur ut responsa praebeat et stipendia recipiat. PHP methodos nonnullas praebet ad faciliorem hunc processum faciendam, sed in usu tuo fretus, cum XML familiari esse debes.

Configurationis


worldserver.conf
Fac uncinis in lima configuratione recte positi.

  1. # SOAP.Enable
  2. # Description: Enable soap service.
  3. # Default: 0 - (Disabled)
  4. # 1 - (Enabled)
  5. SOAP.Enabled = 1
  6. # SOAP.IP
  7. # Description: Bind SOAP service to IP/hostname.
  8. # Default: "127.0.0.1" - (Bind to localhost)
  9. SOAP.IP = "127.0.0.1"
  10. # SOAP.Port
  11. # Description: TCP port to reach the SOAP service.
  12. # Default: 7878
  13. SOAP.Port = 7878

Datae certae RBAC figurae accessus, ratio usoris etiam necessaria erit cum permissionibus utendi GM mandatorum. Posset utilem esse rationem ad hoc speciali ratione limitatum accessum creare, potius quam una persona adhibetur.

NOTE: In scribendo tempore TC 335a tantum sustinet HTTP, ut caveas ne hoc modo secreta mittas. Ponitur quod quidquid praemittitur, in claris textibus est, et a quovis legi potest.
Si per SOAP remotius coniungere cogitas, certa connexio curare debes. Accessus potentialis unus est per contrarium SSL procuratorem per apache vel nginx. Sed hoc extra ambitum huius ductoris non continebitur.

HTTP clientis prototyping


Sunt clientes celeriter nexum instituere et mandata consolari examinare;
TABELLARIUS: https://www.postman.com/ (network, desktop agent/client)
insomnia https://insomnia.rest/
Luscinia luscinia: https://nightingale.rest/
Singula varia offerunt omnia, sed tandem idem fere laborant. Gratias Jackpoz ad providendum gradus specificos pro Postman - https://www.postman.com/.
Postmanus venit in duos sapores: interface telae (velut procuratorem qui institui potest ad petitiones locales faciendas) et in applicatione desktop clientis plenae. Praecepta sunt eadem utrobique.
Sub "Opus meum" deprimendo "Import" invenire. Originali textu optionis uteris.
Effingo et crustulum sequentium JSON in archa textu. Fac quaeso ut documentorum update sub item.request.auth.basic ad GM usorem de quo antea.

  1. {
  2. "info": {
  3. "name": "TC SOAP",
  4. "schema": "https://schema.getpostman.com/json/collection/v2.0.0/collection.json"
  5. },
  6. "item": [
  7. {
  8. "name": "server info",
  9. "request": {
  10. "auth": {
  11. "type": "basic",
  12. "basic": {
  13. "username": "CHANGEME",
  14. "password": "CHANGEME",
  15. "showPassword": false
  16. }
  17. },
  18. "method": "POST",
  19. "header": [],
  20. "body": {
  21. "mode": "raw",
  22. "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>",
  23. "options": {
  24. "raw": {
  25. "language": "xml"
  26. }
  27. }
  28. },
  29. "url": "http://127.0.0.1:7878"
  30. },
  31. "response": []
  32. }
  33. ]
  34. }

Putas de TC SOAP ut collectionem importare. Click Import.
Haec novam collectionem frequentabunt cum recta HTTP methodi (post) ac details sub LICENTIA et Corpus tabs.
Sub Corpore tab, vide XML payload et servo informationem mandatorum quae tibi prae-populata sunt.
Clicking "Mitte" petitionem subiciet et responsionem XML praebebit.
Ad dextrum latus interface Postman, a</> symbolum codicem PRAECISIO aperiet qui petitionem in linguam electionis tuae convertere potest.
Usus PHP
Ad correspondentiam TrinityCore cum PHP utens, debes efficere ut extensionem PHP-semonis habeas inauguratam. Fac etiam uteris versionem PHP quae adhuc strenue sustinetur. Exempla codicis in PHP7.4 ad PHP8.1 probata sunt.
In omnibus his exemplis, urna:TC URI modulus requiritur quod documentum WSDL non praebemus.
SoapClient-https://www.php.net/manual/en/class.soapclient.php

  1. $command = 'server info';
  2. $opts = [
  3. 'http' => [
  4. 'header' => "Authorization: Basic " . base64_encode("USERNAME:PASSWORD")
  5. ]];
  6. $client = new SoapClient($wsdl = null, [
  7. 'stream_context' => stream_context_create($opts),
  8. 'location' => 'http://127.0.0.1:7878',
  9. 'uri' => 'urn:TC',
  10. ]);
  11. try {
  12. $result = $client->executeCommand(new SoapParam($command, 'command'));
  13. } catch (Exception $e) {
  14. die($e->getMessage());
  15. }
  16. echo $result;

Nota nos praeterire HTTP authoritatem fundamentalem capitis cum base64 usoris et tesserae encoded (a colonia separatum). Vel, tu posses omitterestream_contextparametrum, et pro includunt username et password in configuratione SoapClient tuam.

  1. $command = 'server info';
  2. $client = new SoapClient($wsdl = null, [
  3. 'location' => 'http://127.0.0.1:7878',
  4. 'uri' => 'urn:TC',
  5. 'login' => 'USERNAME',
  6. 'password' => 'PASSWORD',
  7. ]);
  8. try {
  9. $result = $client->executeCommand(new SoapParam($command, 'command'));
  10. } catch (Exception $e) {
  11. die($e->getMessage());
  12. }
  13. echo $result;

Aut accessus finis est - sed ne seducamini! Basi 64 descriptam, non in se tutiorem facit.

Memento quod SOAP clientem solum defectiones coniungere, vel misconfigurationes agnoscere potest.Non cognoscet, si mandatum invalidum tibi praebuit . Ita est ad te ut eventus ad parse et arbiter an successus intentus fuit vel non. Output erit perinde ac si mandatum in console fecisti.

Postremo, si in extensione SOAP vel clienti inniti velis, formare potes XML payload et parse proveniens XML responsionis tibi. Te adhuc opus estCrispum extensiosed hoc fere in promptu est nisi per defaltam possit.

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <SOAP-ENV:Envelope
  3. xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  4. xmlns:ns1="urn:TC">
  5. <SOAP-ENV:Body>
  6. <ns1:executeCommand>
  7. <command>server info</command>
  8. </ns1:executeCommand>
  9. </SOAP-ENV:Body>
  10. </SOAP-ENV:Envelope>
  1. $curl = curl_init();
  2. curl_setopt_array($curl, [
  3. CURLOPT_POSTFIELDS => $payload, // $payload is the XML provided above
  4. CURLOPT_URL => 'http://127.0.0.1:7878',
  5. CURLOPT_TIMEOUT => 0,
  6. CURLOPT_CUSTOMREQUEST => 'POST',
  7. CURLOPT_HTTPHEADER => [
  8. "Authorization: Basic " . base64_encode("{$user}:{$pass}"),
  9. 'Content-Type: application/xml',
  10. ],
  11. ]);
  12. $response = curl_exec($curl);
  13. curl_close($curl);
  14. echo $response;