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


Groups > de.comp.lang.php > #4020 > unrolled thread

SoapHeader -> Ansicht als XML

Started byRalph Stahl <post@rstahl.de>
First post2017-01-20 15:23 +0100
Last post2017-04-06 12:24 +0200
Articles 19 — 4 participants

Back to article view | Back to de.comp.lang.php


Contents

  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

#4020 — SoapHeader -> Ansicht als XML

FromRalph Stahl <post@rstahl.de>
Date2017-01-20 15:23 +0100
SubjectSoapHeader -> Ansicht als XML
Message-ID<o5t6gv$q2o$1@news.albasani.net>
Moin!

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

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

Ich baue mir eine spezielle Klasse zur Erzeugung der Header, die
SoapHeader() erweitert (streng genommen überschreibt, da gibt es ja nur
den Konstruktor). Das ist notwendig, weil durch verschiedene
gleichzeitige Namespaces ein einfaches Array zum Füttern von
SoapHeader() bzw. __setHeaders() nicht reicht. Siehe hier, ganz unten:

http://stackoverflow.com/questions/13465168/php-namespaces-in-soapheader-child-nodes

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

Ralph

[toc] | [next] | [standalone]


#4021

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2017-01-20 18:12 +0100
Message-ID<2297003.7s5MMGUR32@PointedEars.de>
In reply to#4020
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.

[toc] | [prev] | [next] | [standalone]


#4022

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2017-01-20 18:26 +0100
Message-ID<2824870.aV6nBDHxoP@PointedEars.de>
In reply to#4021
Thomas 'Ingrid' Lahn wrote:

> 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.

Nimm nc(1), falls Du einen offenen TCP-Port brauchst, und auf jeden Fall 
gleich Wireshark (ohne Umleitung/Copypaste); Letzterer (Version 2.2.2) hat 
sogar extra eine Ansicht für XML im HTTP-Request.

-- 
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.

[toc] | [prev] | [next] | [standalone]


#4024

FromRalph Stahl <post@rstahl.de>
Date2017-01-21 12:55 +0100
Message-ID<o5vi7h$vaa$2@news.albasani.net>
In reply to#4022
Thomas 'PointedEars' Lahn schrieb:
> Thomas 'Ingrid' Lahn wrote:
> 
>> 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.
> 
> Nimm nc(1), falls Du einen offenen TCP-Port brauchst, und auf jeden Fall 
> gleich Wireshark (ohne Umleitung/Copypaste); Letzterer (Version 2.2.2) hat 
> sogar extra eine Ansicht für XML im HTTP-Request.
> 

Also doch, ich habs geahnt. Und das alles wegen einer löchrigen Doku
seitens des Herstellers...

Ralph

[toc] | [prev] | [next] | [standalone]


#4023

FromRalph Stahl <post@rstahl.de>
Date2017-01-21 12:53 +0100
Message-ID<o5vi41$vaa$1@news.albasani.net>
In reply to#4021
Thomas 'PointedEars' Lahn schrieb:
> 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.

Es handelt sich um eine im Grunde uralte Anwendung im Auftrag eines
großen deutschen Automobilclubs ;-), die sich im Kern wohl wenig
verändert hat und deren Doku recht lückenhaft ist. Support gibt es quasi
keinen, deswegen kann ich mich nur an die Allgemeinheit wenden :-(.

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

Danke, das ist mir noch gar nicht aufgefallen :-)

>> 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.

Das kann ich also lokal wie im Folgenden beschrieben machen? Interessant.

> 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].

Klingt interssant. Recht aufwändig, aber wenn das die einzige
Möglichkeit ist... Ich probiere das mal, danke!

> 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).

Oder einfach mit Firefox, den ich üblicherweise nutze.

> 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.

Das habe ich vor Jahren mal probehalber angefasst und gleich wieder
weggelegt - ich habs schlicht nicht verstanden, bin ja nicht so der
Netzzwerg.

>> 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.

Das ist beruhigend.

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

Was sonst? Danke erstmal!

Ralph

[toc] | [prev] | [next] | [standalone]


#4025

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2017-01-21 13:53 +0100
Message-ID<3734308.mogB4TqSGs@PointedEars.de>
In reply to#4023
Ralph Stahl wrote:

> Thomas 'PointedEars' Lahn schrieb:
>> 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 ]); […]
>> 
>> 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].
> 
> Klingt interssant. Recht aufwändig, aber wenn das die einzige
> Möglichkeit ist... Ich probiere das mal, danke!

Wie gesagt, “php -r” ist nur für Quickhacks.  Du kannst auch einfach
in Deinem PHP-Programm den Wert der location-Option temporär auf 
“http://$testserver:$testport/$testpfad” ändern.

Und wenn Du

  1. einen Server hast, zu dem Du eine Verbindung herstellen kannst;
  2. riskieren kannst, Müll an ihn zu senden und
  3. Netzwerkmonitoring-Tools wie Wireshark hast (und sie bedienen kannst),

brauchst Du die Netzkatze auch nicht.
 
>> 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).
> 
> Oder einfach mit Firefox, den ich üblicherweise nutze.

Ja, Firefox gehört zu dieser Softwareklasse.  Das war nur ein Beispiel 
(BTDT: been there, done that).

>> 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.
> 
> Das habe ich vor Jahren mal probehalber angefasst und gleich wieder
> weggelegt - ich habs schlicht nicht verstanden, bin ja nicht so der
> Netzzwerg.

Mein Spezialgebiet ist es auch nicht.

> […] Danke erstmal!

Gern.

Kürz bitte Deine Zitate auf das notwendige Minimum.

-- 
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.

[toc] | [prev] | [next] | [standalone]


#4028

FromRalph Stahl <post@rstahl.de>
Date2017-01-21 18:32 +0100
Message-ID<o605uu$kh1$2@news.albasani.net>
In reply to#4025
Thomas 'PointedEars' Lahn schrieb:

> Wie gesagt, “php -r” ist nur für Quickhacks.  Du kannst auch einfach
> in Deinem PHP-Programm den Wert der location-Option temporär auf 
> “http://$testserver:$testport/$testpfad” ändern.
> 
> Und wenn Du
> 
>   1. einen Server hast, zu dem Du eine Verbindung herstellen kannst;
>   2. riskieren kannst, Müll an ihn zu senden und
>   3. Netzwerkmonitoring-Tools wie Wireshark hast (und sie bedienen kannst),
> 
> brauchst Du die Netzkatze auch nicht.

Localhost? Hier kann ich mich austoben. Ich bräuchte mir nur erstmal
einen simplen SoapServer zu schreiben, der nichts tut als ja und nein zu
antworten oder sowas. Wäre das ne Idee?

Ralph

[toc] | [prev] | [next] | [standalone]


#4029

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2017-01-21 18:40 +0100
Message-ID<5223095.alqRGMn8q6@PointedEars.de>
In reply to#4028
Ralph Stahl wrote:

> Thomas 'PointedEars' Lahn schrieb:
>> Und wenn Du
>> 
>>   1. einen Server hast, zu dem Du eine Verbindung herstellen kannst;
>>   2. riskieren kannst, Müll an ihn zu senden und
>>   3. Netzwerkmonitoring-Tools wie Wireshark hast (und sie bedienen
>>   kannst),
>> 
>> brauchst Du die Netzkatze auch nicht.
> 
> Localhost? Hier kann ich mich austoben. Ich bräuchte mir nur erstmal
> einen simplen SoapServer zu schreiben, der nichts tut als ja und nein zu
> antworten oder sowas. Wäre das ne Idee?

Ja, eine sehr gute.

-- 
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.

[toc] | [prev] | [next] | [standalone]


#4026

FromStefan+Usenet@Froehlich.Priv.at (Stefan Froehlich)
Date2017-01-21 14:57 +0000
Message-ID<eehb60FoicfU1@mid.individual.net>
In reply to#4021
On Fri, 20 Jan 2017 18:12:08 Thomas 'PointedEars' Lahn wrote:
> Ich dachte, SOAP sei seit über einem Jahrzehnt tot.

Man kann sich das nicht immer frei aussuchen, beispielsweise:
<https://finanzonline.bmf.gv.at/fon/wsdl/index.html>

>   \$client = new SoapClient(null, [
>     'location' => 'http://localhost:1337/',
>     'uri' => 'http://localhost/',
>     'trace' => TRUE
>   ]);
>   [...]
>   var_dump(\$client->getLastRequestHeaders());

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

Was ich von meinen diesbezüglichen Versuchen noch in Erinnerung habe: Ja.
Letztendlich habe ich das dann fast ausschließlich mit Hilfe von
getLastRequestHeaders zum Laufen gebracht. Ist nicht viel, reicht aber.

Servus,
   Stefan

-- 
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Stefan - Von Aliens empfohlen: Pupsen bis es rülpst!
(Sloganizer)

[toc] | [prev] | [next] | [standalone]


#4027

FromRalph Stahl <post@rstahl.de>
Date2017-01-21 18:30 +0100
Message-ID<o605r5$kh1$1@news.albasani.net>
In reply to#4026
Stefan Froehlich schrieb:

>>> BTW: Trotz trace = 1 in SoapClient() liefert mir 
>>> getLastRequestHeaders() gar nichts. Muss da selbst bei der
>>> ersten Kontaktaufnahme mit dem Server schon was kommen?
> 
> Was ich von meinen diesbezüglichen Versuchen noch in Erinnerung habe:
> Ja. Letztendlich habe ich das dann fast ausschließlich mit Hilfe von 
> getLastRequestHeaders zum Laufen gebracht. Ist nicht viel, reicht
> aber.
> 
> Servus, Stefan
> 

Hm, das scheint mir sinnvoll, wozu wäre die Funktion sonst da? Das würde
aber heißen, ich bekomme noch nichtmal Kontakt bei SoapClient(), also
die Anmeldung klappt schon nicht.

Mist, dass die Gegenstelle von Unterstützung absolut nichts hält. Da
wird man gleich vom Geschäftsführer abgewiesen, quasi mit "RTFM".

Na, ich habe jetzt ein paar Tips von Euch, danke. Vielleicht frage ich
nächste Woche weiter :-).

Ralph

[toc] | [prev] | [next] | [standalone]


#4030

FromStefan+Usenet@Froehlich.Priv.at (Stefan Froehlich)
Date2017-01-21 17:44 +0000
Message-ID<1t58839da1i741fn3e8%sfroehli@Froehlich.Priv.at>
In reply to#4027
On Sat, 21 Jan 2017 18:30:12 Ralph Stahl wrote:
> Stefan Froehlich schrieb:
> > Was ich von meinen diesbezüglichen Versuchen noch in Erinnerung habe:
> > Ja. Letztendlich habe ich das dann fast ausschließlich mit Hilfe von 
> > getLastRequestHeaders zum Laufen gebracht. Ist nicht viel, reicht
> > aber.

> Mist, dass die Gegenstelle von Unterstützung absolut nichts hält. Da
> wird man gleich vom Geschäftsführer abgewiesen, quasi mit "RTFM".

Mein Beileid, bei mir war's genauso (beim Finanzamt persönliche
Unterstützung zu erhoffen, wäre verwegen). Aber letztendlich ist
es zwar zuerst ärgerlich und dann einfach eine mühsame Bastelei -
aber kein technologisches Weltwunder.

Servus,
   Stefan

-- 
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Stefan - Liebe, die nimmermehr käst.
(Sloganizer)

[toc] | [prev] | [next] | [standalone]


#4031

Fromk@rl.pflaesterer.de (Karl Pflästerer)
Date2017-01-23 08:58 +0100
Message-ID<m137gadx6o.fsf@mbp.pflaesterer.de>
In reply to#4027
Ralph Stahl <post@rstahl.de> writes:

> Stefan Froehlich schrieb:
>
>>>> BTW: Trotz trace = 1 in SoapClient() liefert mir 
>>>> getLastRequestHeaders() gar nichts. Muss da selbst bei der
>>>> ersten Kontaktaufnahme mit dem Server schon was kommen?
>> 
>> Was ich von meinen diesbezüglichen Versuchen noch in Erinnerung habe:
>> Ja. Letztendlich habe ich das dann fast ausschließlich mit Hilfe von 
>> getLastRequestHeaders zum Laufen gebracht. Ist nicht viel, reicht
>> aber.
>> 
>> Servus, Stefan
>> 
>
> Hm, das scheint mir sinnvoll, wozu wäre die Funktion sonst da? Das würde
> aber heißen, ich bekomme noch nichtmal Kontakt bei SoapClient(), also
> die Anmeldung klappt schon nicht.
>
> Mist, dass die Gegenstelle von Unterstützung absolut nichts hält. Da
> wird man gleich vom Geschäftsführer abgewiesen, quasi mit "RTFM".
>
> Na, ich habe jetzt ein paar Tips von Euch, danke. Vielleicht frage ich
> nächste Woche weiter :-).

Gibt es eine andere funktionierende Anwendung, die mit dem Server
kommuniziert? Oft sind es bei SOAP Java Anwendungen.

Wir hatten auch schon solche Anforderungen und konnten es nur dadurch
lösen, dass wir den Verkehr, der funktionierenden Anwendung mitschnitten
und dann die XML Struktur manuell erzeugten. Trotz Standards gibt es
doch einige Variationen bei SOAP.

KP

[toc] | [prev] | [next] | [standalone]


#4032

FromRalph Stahl <post@rstahl.de>
Date2017-01-23 17:31 +0100
Message-ID<o65b5a$1ke$1@news.albasani.net>
In reply to#4031
Karl Pflästerer schrieb:
> Ralph Stahl <post@rstahl.de> writes:
> 
>> Stefan Froehlich schrieb:
>>
>>>>> BTW: Trotz trace = 1 in SoapClient() liefert mir 
>>>>> getLastRequestHeaders() gar nichts. Muss da selbst bei der
>>>>> ersten Kontaktaufnahme mit dem Server schon was kommen?
>>>
>>> Was ich von meinen diesbezüglichen Versuchen noch in Erinnerung habe:
>>> Ja. Letztendlich habe ich das dann fast ausschließlich mit Hilfe von 
>>> getLastRequestHeaders zum Laufen gebracht. Ist nicht viel, reicht
>>> aber.
>>>
>>> Servus, Stefan
>>>
>>
>> Hm, das scheint mir sinnvoll, wozu wäre die Funktion sonst da? Das würde
>> aber heißen, ich bekomme noch nichtmal Kontakt bei SoapClient(), also
>> die Anmeldung klappt schon nicht.
>>
>> Mist, dass die Gegenstelle von Unterstützung absolut nichts hält. Da
>> wird man gleich vom Geschäftsführer abgewiesen, quasi mit "RTFM".
>>
>> Na, ich habe jetzt ein paar Tips von Euch, danke. Vielleicht frage ich
>> nächste Woche weiter :-).
> 
> Gibt es eine andere funktionierende Anwendung, die mit dem Server
> kommuniziert? Oft sind es bei SOAP Java Anwendungen.

Mit Sicherheit. Aber alle sind außerordentlich geheim und und
unterliegen per Unterschrift der Verschwiegenheit... Das ist
Softwareentwicklung mit dem Ellenbogen.

> Wir hatten auch schon solche Anforderungen und konnten es nur dadurch
> lösen, dass wir den Verkehr, der funktionierenden Anwendung mitschnitten
> und dann die XML Struktur manuell erzeugten. Trotz Standards gibt es
> doch einige Variationen bei SOAP.
> 
> KP
> 

Ja, so will ich das auch versuchen. Unnötig aufwändig, aber solange der
Aufwand bezahlt wird, gelle?

Ralph

[toc] | [prev] | [next] | [standalone]


#4034

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2017-01-23 20:22 +0100
Message-ID<2083905.yKrmzQ4Hd0@PointedEars.de>
In reply to#4027
Ralph Stahl wrote:

> Mist, dass die Gegenstelle von Unterstützung absolut nichts hält. Da
> wird man gleich vom Geschäftsführer abgewiesen, quasi mit "RTFM".

Mitunter ist das entsprechende WSDL-Dokument selbsterklärend:

<http://www.predic8.de/wsdl-lernen.htm>

Beziehungsweise kann man mit Eclipse aus einem WSDL-Dokument entsprechenden 
Java-Code für einen SOAP-Client generieren.  Das gibt es (nach kurzer 
Google-Suche nach “wsdl generate php” gefunden) auch für PHP:

<http://stackoverflow.com/a/1656763/855543>

-- 
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.

[toc] | [prev] | [next] | [standalone]


#4036

FromRalph Stahl <post@rstahl.de>
Date2017-01-26 19:44 +0100
Message-ID<o6dg2a$t8$1@news.albasani.net>
In reply to#4034
Thomas 'PointedEars' Lahn schrieb:
> Ralph Stahl wrote:
> 
>> Mist, dass die Gegenstelle von Unterstützung absolut nichts hält. Da
>> wird man gleich vom Geschäftsführer abgewiesen, quasi mit "RTFM".
> 
> Mitunter ist das entsprechende WSDL-Dokument selbsterklärend:
> 
> <http://www.predic8.de/wsdl-lernen.htm>
> 
> Beziehungsweise kann man mit Eclipse aus einem WSDL-Dokument entsprechenden 
> Java-Code für einen SOAP-Client generieren.  Das gibt es (nach kurzer 
> Google-Suche nach “wsdl generate php” gefunden) auch für PHP:
> 
> <http://stackoverflow.com/a/1656763/855543>
> 

Habe ich mir heute angeguckt, aber ich kann das leider nicht anwenden.
Bin wohl zu blöd dazu... Was muß man aufrufen? Verfügbare Beschreibungen
gehen leider gegen Null. Aber danke für den Tip!

Ich habe jetzt Möglichkeiten gefunden, wie ich das machen kann. Bei
hinreichendem Erfolg werde ich das irgendwo hinschreiben und posten.

Ralph

[toc] | [prev] | [next] | [standalone]


#4037

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2017-01-26 23:46 +0100
Message-ID<2366618.mvXUDI8C0e@PointedEars.de>
In reply to#4036
Ralph Stahl wrote:

> Thomas 'PointedEars' Lahn schrieb:
>> Beziehungsweise kann man […] aus einem WSDL-Dokument
>> entsprechenden Java-Code für einen SOAP-Client generieren.
>> Das gibt es (nach kurzer Google-Suche nach “wsdl generate php”
>> gefunden) auch für PHP:
>> 
>> <http://stackoverflow.com/a/1656763/855543>
> 
> Habe ich mir heute angeguckt, aber ich kann das leider nicht anwenden.
> Bin wohl zu blöd dazu... Was muß man aufrufen? Verfügbare Beschreibungen
> gehen leider gegen Null. 

Wie bitte?  Es steht *alles* in jener Antwort auf Stack Overflow.  In Prosa:

  1. WSDL-Dokument laden.
  2. Proxy-Code daraus generieren.
  3. Proxy-Code in ein PHP-Script schreiben.

Das einzige, was Du vorher noch machen musst, ist das angegebene PEAR-
Package zu installieren, und das ist ebenfalls gut dokumentiert.

> Aber danke für den Tip!

Gern.

-- 
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.

[toc] | [prev] | [next] | [standalone]


#4040

FromRalph Stahl <post@rstahl.de>
Date2017-01-27 10:21 +0100
Message-ID<o6f3e9$841$1@news.albasani.net>
In reply to#4037
Thomas 'PointedEars' Lahn schrieb:
> Ralph Stahl wrote:
> 
>> Thomas 'PointedEars' Lahn schrieb:
>>> Beziehungsweise kann man […] aus einem WSDL-Dokument
>>> entsprechenden Java-Code für einen SOAP-Client generieren.
>>> Das gibt es (nach kurzer Google-Suche nach “wsdl generate php”
>>> gefunden) auch für PHP:
>>>
>>> <http://stackoverflow.com/a/1656763/855543>
>>
>> Habe ich mir heute angeguckt, aber ich kann das leider nicht anwenden.
>> Bin wohl zu blöd dazu... Was muß man aufrufen? Verfügbare Beschreibungen
>> gehen leider gegen Null. 
> 
> Wie bitte?  Es steht *alles* in jener Antwort auf Stack Overflow.  In Prosa:
> 
>   1. WSDL-Dokument laden.
>   2. Proxy-Code daraus generieren.
>   3. Proxy-Code in ein PHP-Script schreiben.
> 
> Das einzige, was Du vorher noch machen musst, ist das angegebene PEAR-
> Package zu installieren, und das ist ebenfalls gut dokumentiert.

Das bezog sich auf den wsdl2phpgenerator in der derzeitigen Version 3,
da weiß ich nicht, welches der Scripte wie aufzurufen geht. PEAR ist was
anderes, ja.

[toc] | [prev] | [next] | [standalone]


#4042

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2017-01-27 12:21 +0100
Message-ID<1892547.irdbgypaU6@PointedEars.de>
In reply to#4040
Ralph Stahl wrote:

> Thomas 'PointedEars' Lahn schrieb:
>> Ralph Stahl wrote:
>>> Thomas 'PointedEars' Lahn schrieb:
>>>> Beziehungsweise kann man […] aus einem WSDL-Dokument
>>>> entsprechenden Java-Code für einen SOAP-Client generieren.
>>>> Das gibt es (nach kurzer Google-Suche nach “wsdl generate php”
>>>> gefunden) auch für PHP:
>>>>
>>>> <http://stackoverflow.com/a/1656763/855543>
>>>
>>> Habe ich mir heute angeguckt, aber ich kann das leider nicht anwenden.
>>> Bin wohl zu blöd dazu... Was muß man aufrufen? Verfügbare Beschreibungen
>>> gehen leider gegen Null.
>> 
>> Wie bitte?  Es steht *alles* in jener Antwort auf Stack Overflow.  In
>> Prosa:
>> 
>>   1. WSDL-Dokument laden.
>>   2. Proxy-Code daraus generieren.
>>   3. Proxy-Code in ein PHP-Script schreiben.
>> 
>> Das einzige, was Du vorher noch machen musst, ist das angegebene PEAR-
>> Package zu installieren, und das ist ebenfalls gut dokumentiert.
> 
> Das bezog sich auf den wsdl2phpgenerator in der derzeitigen Version 3,
> da weiß ich nicht, welches der Scripte wie aufzurufen geht.

Weshalb schreibst Du das unter den Teil meiner Antwort, in dem ich 
vorschlage, die Klasse SOAP_WSDL aus dem PEAR-Paket SOAP (0.9.4)
zu verwenden?

-- 
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.

[toc] | [prev] | [next] | [standalone]


#4104

FromRalph Stahl <post@rstahl.de>
Date2017-04-06 12:24 +0200
Message-ID<oc54r4$7sh$1@dont-email.me>
In reply to#4020
Ralph Stahl schrieb:
> Moin!
> 
> Ich bin am Einarbeiten in die Entwicklung eines SOAP-Clients, bei dem
> die Headerstruktur für SoapClient() vom Auftraggeber natürlich
> vorgegeben ist. 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) 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!
> 
> BTW: Trotz trace = 1 in SoapClient() liefert mir getLastRequestHeaders()
> gar nichts. Muss da selbst bei der ersten Kontaktaufnahme mit dem Server
> schon was kommen?
> 
> Ich baue mir eine spezielle Klasse zur Erzeugung der Header, die
> SoapHeader() erweitert (streng genommen überschreibt, da gibt es ja nur
> den Konstruktor). Das ist notwendig, weil durch verschiedene
> gleichzeitige Namespaces ein einfaches Array zum Füttern von
> SoapHeader() bzw. __setHeaders() nicht reicht. Siehe hier, ganz unten:
> 
> http://stackoverflow.com/questions/13465168/php-namespaces-in-soapheader-child-nodes
> 
> Ich wäre sehr dankbar für helfende Hinweise, selbst den, dass ich
> einfach nur lesen muss :-).
> 
> Ralph
> 


Falls das mal jemand braucht, hier noch ein Abschluss-Kommentar. So habe
ich meinen SOAP-Server server.php gebaut, der nun die Daten empfängt,
auswerten kann und weiterverarbeitet (wohlgemerkt, hier nur grob und
beispielhaft!):



// braucht man nur, wenn man an die Daten will
// das habe ich gesucht!
// $xmlstring enthält den gesamten Datenstrom vom Client
// der Gegenstelle einschl. Header, Body etc.
// Lässt sich in eine Datei test.xml schreiben und
// z.B. mit Opera angucken (Firefox macht das schlecht)
$xmlstring = file_get_contents('php://input');

// falls gebraucht, z.B. zum Test der Autorisierung...:
$xml = new SimpleXMLElement($xmlstring);
$xml->registerXPathNamespace('wsse', $mein_security_namespace);
$attribut_wert = $xml->xpath('//wsse:username');
...

try {
    $server = new SoapServer($meine_wsdl_url);
    $server->setClass('meine_klasse_mit_funktionen');
    $server->handle();
} catch(SoapFault $e) {
    echo "Fehler SOAP-Server: $e";
}

// -----------------

class meine_klasse_mit_funktionen {

    public function f1($object1) {
        return $object1->wert1;
        // wert1 wird vom Client der Gegenstelle empfangen
    }
}

[toc] | [prev] | [standalone]


Back to top | Article view | de.comp.lang.php


csiph-web