Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.php > #4021

Re: SoapHeader -> Ansicht als XML

From Thomas 'PointedEars' Lahn <PointedEars@web.de>
Newsgroups de.comp.lang.php
Subject Re: SoapHeader -> Ansicht als XML
Date 2017-01-20 18:12 +0100
Organization PointedEars Software (PES)
Message-ID <2297003.7s5MMGUR32@PointedEars.de> (permalink)
References <o5t6gv$q2o$1@news.albasani.net>

Show all headers | View raw


Ralph Stahl wrote:

> Ich bin am Einarbeiten in die Entwicklung eines SOAP-Clients, bei dem
> die Headerstruktur für SoapClient() vom Auftraggeber natürlich
> vorgegeben ist.

Ich dachte, SOAP sei seit über einem Jahrzehnt tot.  Heutzutage benutzt
Mann[tm] doch für Webservices eher REST mit XML, JSON, CSON oder YAML als 
Datenformat.

> Ich beziehe mich zunächst mal auf die User-Kommentare in
> 
> http://php.net/manual/en/class.soapheader.php
> 
> Wie kann ich denn das erzeugt $header-Objekt (Kommentar 7, 9)

Das sind _nicht_ die Nummern der Kommentare, sondern ihre *Bewertungen*,
die sich jederzeit ändern können :)

Um einen Kommentar im Handbuch zu referenzieren, am besten dessen URI 
verwenden (der Name/die maskierte E-Mail-Adresse des Autors ist – leider 
nicht benutzerfreundlich gekennzeichnet – verlinkt):

<http://php.net/manual/en/class.soapheader.php#117594>
<http://php.net/manual/en/class.soapheader.php#107889>

> als XML darstellen, um es zu kontrollieren und mit den Vorgaben zu
> vergleichen? Stelle ich es mit print_r() dar, sehe ich es wie ein Array, 
> also ohne die Namespaces und so. Helft mir doch bitte mal auf die Sprünge!

Da SoapHeader-Instanzen keine passende Methode haben – das kann man 
unabhängig von der Dokumentation mit

  var_dump((new ReflectionClass($header))->getMethods());

herausfinden – und wenn auch SoapClient-Instanzen keine Möglichkeit bieten, 
bleibt Dir wohl nur, einen SOAP-Request abzusetzen und zu gucken, was beim 
Server ankommt.

Ich mache sowas bei Quickhacks gern mit der Netzkatze™ (netcat) nc(1).
Also zum Beispiel im einen screen(1)-Fenster

  nc -lp 1337

um lokal auf Port *1337* (natürlich!) zu lauschen, und im anderen

php -r "
  \$client = new SoapClient(null, [
    'location' => 'http://localhost:1337/',
    'uri' => 'http://localhost/',
    'trace' => TRUE
  ]);
  \$auth = array(
        'UserName' => 'USERNAME',
        'Password' => 'PASSWORD',
        'SystemId' => array('_' => 'DATA', 'Param' => 'PARAM'),
        );
  \$header = new SoapHeader('NAMESPACE', 'Auth', \$auth, false);
  var_dump(\$header);
  var_dump((new ReflectionClass(\$header))->getMethods());
  \$client->__setSoapHeaders(\$header);
  \$client->soapCall('baz', []);
  var_dump(\$client->getLastRequestHeaders());
"

ausführen [“\$x”: im Beispiel wurden “'” als String-Begrenzer verwendet, und 
ich wollte die erst nicht alle ändern müssen; “null”: ich hatte gerade kein 
WSDL-Dokument zur Hand].

Die Ausgabe könntest Du dann in ein XML-Dokument speichern und dieses zum 
Beispiel mit einem XML-fähigen Web-Browser anzeigen, um sie einfacher lesen 
zu können (BTDT mit Chromium 53.0.2785.143 unter Debian/Devuan GNU/Linux 
amd64).

Dann gibt es noch Netzwerkmonitoring-Tools wie Wireshark und ein 
äquivalentes Windoze-only-Programm, dessen Name mir meist (so auch jetzt) 
nicht einfällt, weil ich es viel zu selten benutze.

> BTW: Trotz trace = 1 in SoapClient() liefert mir getLastRequestHeaders()
> gar nichts. Muss da selbst bei der ersten Kontaktaufnahme mit dem Server
> schon was kommen?

Vermutlich erst, wenn der Server geantwortet hat.  Bei mir liefert 
SoapClient::getLastRequestHeaders() *so* auch nichts.

> Ich wäre sehr dankbar für helfende Hinweise, selbst den, dass ich
> einfach nur lesen muss :-).

RTFM ;-)

Gern geschehen.

-- 
PointedEars
Zend Certified PHP Engineer <http://www.zend.com/en/yellow-pages/ZEND024953>
<https://github.com/PointedEars> | <http://PointedEars.de/wsvn>
Twitter: @PointedEars2 | Please do not cc me./Bitte keine Kopien per E-Mail.

Back to de.comp.lang.php | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

SoapHeader -> Ansicht als XML Ralph Stahl <post@rstahl.de> - 2017-01-20 15:23 +0100
  Re: SoapHeader -> Ansicht als XML Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-20 18:12 +0100
    Re: SoapHeader -> Ansicht als XML Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-20 18:26 +0100
      Re: SoapHeader -> Ansicht als XML Ralph Stahl <post@rstahl.de> - 2017-01-21 12:55 +0100
    Re: SoapHeader -> Ansicht als XML Ralph Stahl <post@rstahl.de> - 2017-01-21 12:53 +0100
      Re: SoapHeader -> Ansicht als XML Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-21 13:53 +0100
        Re: SoapHeader -> Ansicht als XML Ralph Stahl <post@rstahl.de> - 2017-01-21 18:32 +0100
          Re: SoapHeader -> Ansicht als XML Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-21 18:40 +0100
    Re: SoapHeader -> Ansicht als XML Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2017-01-21 14:57 +0000
      Re: SoapHeader -> Ansicht als XML Ralph Stahl <post@rstahl.de> - 2017-01-21 18:30 +0100
        Re: SoapHeader -> Ansicht als XML Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2017-01-21 17:44 +0000
        Re: SoapHeader -> Ansicht als XML k@rl.pflaesterer.de (Karl Pflästerer) - 2017-01-23 08:58 +0100
          Re: SoapHeader -> Ansicht als XML Ralph Stahl <post@rstahl.de> - 2017-01-23 17:31 +0100
        Re: SoapHeader -> Ansicht als XML Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-23 20:22 +0100
          Re: SoapHeader -> Ansicht als XML Ralph Stahl <post@rstahl.de> - 2017-01-26 19:44 +0100
            Re: SoapHeader -> Ansicht als XML Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-26 23:46 +0100
              Re: SoapHeader -> Ansicht als XML Ralph Stahl <post@rstahl.de> - 2017-01-27 10:21 +0100
                Re: SoapHeader -> Ansicht als XML Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-27 12:21 +0100
  Re: SoapHeader -> Ansicht als XML Ralph Stahl <post@rstahl.de> - 2017-04-06 12:24 +0200

csiph-web