Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.php > #4020 > unrolled thread
| Started by | Ralph Stahl <post@rstahl.de> |
|---|---|
| First post | 2017-01-20 15:23 +0100 |
| Last post | 2017-04-06 12:24 +0200 |
| Articles | 19 — 4 participants |
Back to article view | Back to de.comp.lang.php
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
| From | Ralph Stahl <post@rstahl.de> |
|---|---|
| Date | 2017-01-20 15:23 +0100 |
| Subject | SoapHeader -> 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]
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Date | 2017-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]
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Date | 2017-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]
| From | Ralph Stahl <post@rstahl.de> |
|---|---|
| Date | 2017-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]
| From | Ralph Stahl <post@rstahl.de> |
|---|---|
| Date | 2017-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]
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Date | 2017-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]
| From | Ralph Stahl <post@rstahl.de> |
|---|---|
| Date | 2017-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]
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Date | 2017-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]
| From | Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) |
|---|---|
| Date | 2017-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]
| From | Ralph Stahl <post@rstahl.de> |
|---|---|
| Date | 2017-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]
| From | Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) |
|---|---|
| Date | 2017-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]
| From | k@rl.pflaesterer.de (Karl Pflästerer) |
|---|---|
| Date | 2017-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]
| From | Ralph Stahl <post@rstahl.de> |
|---|---|
| Date | 2017-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]
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Date | 2017-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]
| From | Ralph Stahl <post@rstahl.de> |
|---|---|
| Date | 2017-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]
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Date | 2017-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]
| From | Ralph Stahl <post@rstahl.de> |
|---|---|
| Date | 2017-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]
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Date | 2017-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]
| From | Ralph Stahl <post@rstahl.de> |
|---|---|
| Date | 2017-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