Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.php > #4035 > unrolled thread
| Started by | Ralph Stahl <post@rstahl.de> |
|---|---|
| First post | 2017-01-25 19:56 +0100 |
| Last post | 2017-01-30 09:43 +0100 |
| Articles | 20 on this page of 28 — 4 participants |
Back to article view | Back to de.comp.lang.php
SoapHeader direkt aus XML erstellen Ralph Stahl <post@rstahl.de> - 2017-01-25 19:56 +0100
Re: SoapHeader direkt aus XML erstellen Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-26 23:59 +0100
Re: SoapHeader direkt aus XML erstellen Ralph Stahl <post@rstahl.de> - 2017-01-27 09:56 +0100
Re: SoapHeader direkt aus XML erstellen Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-27 12:14 +0100
Re: SoapHeader direkt aus XML erstellen Ralph Stahl <post@rstahl.de> - 2017-01-27 14:39 +0100
Re: SoapHeader direkt aus XML erstellen Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-27 14:47 +0100
Re: SoapHeader direkt aus XML erstellen Ralph Stahl <post@rstahl.de> - 2017-01-27 15:10 +0100
Re: SoapHeader direkt aus XML erstellen Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-27 16:40 +0100
Re: SoapHeader direkt aus XML erstellen Ralph Stahl <post@rstahl.de> - 2017-01-28 11:38 +0100
Re: SoapHeader direkt aus XML erstellen Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-28 12:04 +0100
Re: SoapHeader direkt aus XML erstellen "Christoph M. Becker" <cmbecker69@arcor.de> - 2017-01-28 12:22 +0100
Re: SoapHeader direkt aus XML erstellen Ralph Stahl <post@rstahl.de> - 2017-01-28 12:58 +0100
Re: SoapHeader direkt aus XML erstellen Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-28 13:35 +0100
Re: SoapHeader direkt aus XML erstellen "Christoph M. Becker" <cmbecker69@arcor.de> - 2017-01-28 16:52 +0100
Re: SoapHeader direkt aus XML erstellen Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-28 16:59 +0100
Re: SoapHeader direkt aus XML erstellen Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2017-01-28 14:22 +0000
Re: SoapHeader direkt aus XML erstellen Ralph Stahl <post@rstahl.de> - 2017-01-28 12:36 +0100
Re: SoapHeader direkt aus XML erstellen Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-28 13:37 +0100
Re: SoapHeader direkt aus XML erstellen Ralph Stahl <post@rstahl.de> - 2017-01-28 19:30 +0100
Re: SoapHeader direkt aus XML erstellen Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-28 21:10 +0100
Re: SoapHeader direkt aus XML erstellen Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2017-01-28 20:34 +0000
Re: SoapHeader direkt aus XML erstellen Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-28 22:10 +0100
Re: SoapHeader direkt aus XML erstellen Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2017-01-29 04:34 +0000
Re: SoapHeader direkt aus XML erstellen Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-29 14:29 +0100
Re: SoapHeader direkt aus XML erstellen Ralph Stahl <post@rstahl.de> - 2017-01-29 12:37 +0100
Re: SoapHeader direkt aus XML erstellen Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2017-01-29 11:55 +0000
Re: SoapHeader direkt aus XML erstellen Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-29 14:30 +0100
Re: SoapHeader direkt aus XML erstellen Ralph Stahl <post@rstahl.de> - 2017-01-30 09:43 +0100
Page 1 of 2 [1] 2 Next page →
| From | Ralph Stahl <post@rstahl.de> |
|---|---|
| Date | 2017-01-25 19:56 +0100 |
| Subject | SoapHeader direkt aus XML erstellen |
| Message-ID | <o6asd1$8ss$1@news.albasani.net> |
Moin!
Für eine zu entwickelnde Anwendung wird mir ein Autorisierungsheader als
"XML-Beispiel" vorgegeben, der die Schwierigkeit hat, 3 verschiedene
Namespaces und einige andere hübsche Besonderheiten zu enthalten. Zu
Veranschaulichung sieht er als XML schematisch wie folgt aus:
$xml = '
<soapenv:Header>
<wsse:Security xmlns:wsse="xxx" xmlns:wsu="xxx">
<wsse:UsernameToken>
<wsse:Username>xxx</wsse:Username>
<wsse:Password Type="xxx">xxx</wsse:Password>
<wsu:xxx>...</wsu:xxx>
</wsse:UsernameToken>
</wsse:Security>
<v2:xxxHeader>
<ns3:Api>
<ns3:APIUser>xxx</v2:APIUser>
...
</ns3:Api>
</ns3:xxxHeader>
</soapenv:Header>
';
Der erste Ansatz war die Erzeugung mit der Methode, wie sie in [1]
beschrieben wird: durch eine von SoapHeader vererbte Klasse, die über
SoapVar die Struktur erzeugt. das Scheiterte an den eingestreuten
Type=""-Anweisungen, die ich damit nicht hinbekommen habe.
Der Zweite Versuch entstand aus dem Codeschnipsel unter [2], das mir
vielversprechend scheint. Ich möchte nun aus der vorliegenden
XML-Struktur direkt den Header erzeugen, also quasi SoapHeader
überspringen, was ja eigentlich auch nicht viel anderes macht - außer
daß zum Beispiel der Namespace des Webservices mit eingebaut wird (den
ich kenne, targetNamespace="" im WSDL).
Wenn ich aber nun wie in diesem Schnipsel angedeutet
$header = new SoapVar($xml, XSD_ANYXML);
$client->__setSoapHeaders($header);
mache, bekomme ich eine "Warning: SoapClient::__setSoapHeaders():
Invalid SOAP header in ..." für die Zeile mit __setSoapHeaders. Das kann
ich nicht deuten. Hat das schonmal jemand von Euch so versucht? Frau
Goggel kennt diese Meldung so nicht, jedenfalls nicht in so einem
Zusammenhang.
Ich freue mich auf Tipps, danke schonmal!
Ralph
[1]
http://stackoverflow.com/questions/13465168/php-namespaces-in-soapheader-child-nodes
[2]
https://gist.github.com/johnkary/7782110
[toc] | [next] | [standalone]
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Date | 2017-01-26 23:59 +0100 |
| Message-ID | <10769261.O9o76ZdvQC@PointedEars.de> |
| In reply to | #4035 |
Ralph Stahl wrote: > Für eine zu entwickelnde Anwendung wird mir ein Autorisierungsheader als > "XML-Beispiel" vorgegeben, der die Schwierigkeit hat, 3 verschiedene > Namespaces und einige andere hübsche Besonderheiten zu enthalten. Zu > Veranschaulichung sieht er als XML schematisch wie folgt aus: > > $xml = ' > <soapenv:Header> > <wsse:Security xmlns:wsse="xxx" xmlns:wsu="xxx"> > <wsse:UsernameToken> > <wsse:Username>xxx</wsse:Username> > <wsse:Password Type="xxx">xxx</wsse:Password> > <wsu:xxx>...</wsu:xxx> > </wsse:UsernameToken> > </wsse:Security> > […] > </soapenv:Header> > '; > > Der erste Ansatz war die Erzeugung mit der Methode, wie sie in [1] > beschrieben wird: durch eine von SoapHeader vererbte Klasse, die über > SoapVar die Struktur erzeugt. das Scheiterte an den eingestreuten > Type=""-Anweisungen, die ich damit nicht hinbekommen habe. Das sind keine Anweisungen, sondern _Attribute_ (HTML/SGML/XML-Grundlagen). Und „geht nicht“/„bekomme ich (damit) nicht hin“ ist keine Fehler-/Problembeschreibung. > Der Zweite Versuch entstand aus dem Codeschnipsel unter [2], Der ist kurz genug, dass Du ihn hier hättest posten können. Bedenke: Usenet !== Internet !== World Wide Web. > Wenn ich aber nun wie in diesem Schnipsel angedeutet > > $header = new SoapVar($xml, XSD_ANYXML); > $client->__setSoapHeaders($header); > > mache, bekomme ich eine "Warning: SoapClient::__setSoapHeaders(): > Invalid SOAP header in ..." für die Zeile mit __setSoapHeaders.Das kann > ich nicht deuten. Hat das schonmal jemand von Euch so versucht? Wahrscheinlich nicht, denn im Handbuch (sogar ausnahmsweise in der deutschsprachigen Übersetzung) steht, weshalb das nicht funktionieren kann: ,-<http://php.net/manual/de/soapclient.setsoapheaders.php> | | soapheaders | Die zu setzenden Header. Dies kann ein SoapHeader-Objekt oder ein Array | von SoapHeader-Objekten sein. > Frau Goggel kennt diese Meldung so nicht, […] Obiges habe ich gefunden als ersten Treffer einer Google-Suche nach “setSoapHeaders”. Aber nur, weil ich zu faul war, “php setSoapHeaders” einzugeben, was meinen PHP-RTFM-Bookmark triggert: ,-<chrome://settings/searchEngines> | | PHP Manual Quick Reference | php | http://php.net/manual-lookup.php?function=%s -- 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 09:56 +0100 |
| Message-ID | <o6f205$b0q$1@news.albasani.net> |
| In reply to | #4038 |
Thomas 'PointedEars' Lahn schrieb: > Ralph Stahl wrote: > >> Für eine zu entwickelnde Anwendung wird mir ein Autorisierungsheader als >> "XML-Beispiel" vorgegeben, der die Schwierigkeit hat, 3 verschiedene >> Namespaces und einige andere hübsche Besonderheiten zu enthalten. Zu >> Veranschaulichung sieht er als XML schematisch wie folgt aus: >> >> $xml = ' >> <soapenv:Header> >> <wsse:Security xmlns:wsse="xxx" xmlns:wsu="xxx"> >> <wsse:UsernameToken> >> <wsse:Username>xxx</wsse:Username> >> <wsse:Password Type="xxx">xxx</wsse:Password> >> <wsu:xxx>...</wsu:xxx> >> </wsse:UsernameToken> >> </wsse:Security> >> […] >> </soapenv:Header> >> '; >> >> Der erste Ansatz war die Erzeugung mit der Methode, wie sie in [1] >> beschrieben wird: durch eine von SoapHeader vererbte Klasse, die über >> SoapVar die Struktur erzeugt. das Scheiterte an den eingestreuten >> Type=""-Anweisungen, die ich damit nicht hinbekommen habe. > > Das sind keine Anweisungen, sondern _Attribute_ (HTML/SGML/XML-Grundlagen). > Und „geht nicht“/„bekomme ich (damit) nicht hin“ ist keine > Fehler-/Problembeschreibung. Schon gut ;). ... >> Wenn ich aber nun wie in diesem Schnipsel angedeutet >> >> $header = new SoapVar($xml, XSD_ANYXML); >> $client->__setSoapHeaders($header); >> >> mache, bekomme ich eine "Warning: SoapClient::__setSoapHeaders(): >> Invalid SOAP header in ..." für die Zeile mit __setSoapHeaders.Das kann >> ich nicht deuten. Hat das schonmal jemand von Euch so versucht? > > Wahrscheinlich nicht, denn im Handbuch (sogar ausnahmsweise in der > deutschsprachigen Übersetzung) steht, weshalb das nicht funktionieren kann: > > ,-<http://php.net/manual/de/soapclient.setsoapheaders.php> > | > | soapheaders > | Die zu setzenden Header. Dies kann ein SoapHeader-Objekt oder ein Array > | von SoapHeader-Objekten sein. $header = new SoapVar($xml, XSD_ANYXML) ergibt ein SoapHeader-Objekt. Übrigens wird dieser Weg von einigen gegangen, die ich gefunden habe, z.B. [1]. Weil anderweitig der WS-Security-Header kaum gebastelt werden kann. Meiner hat noch ein paar anwendungsspezifische Zeilen mehr, was das nicht gerade erleichtert. Ralph [1] http://stackoverflow.com/questions/2987907/how-to-implement-ws-security-1-1-in-php5
[toc] | [prev] | [next] | [standalone]
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Date | 2017-01-27 12:14 +0100 |
| Message-ID | <1635622.tdWV9SEqCh@PointedEars.de> |
| In reply to | #4039 |
Ralph Stahl wrote: > Thomas 'PointedEars' Lahn schrieb: >> Ralph Stahl wrote: >>> Wenn ich aber nun wie in diesem Schnipsel angedeutet >>> >>> $header = new SoapVar($xml, XSD_ANYXML); >>> $client->__setSoapHeaders($header); >>> >>> mache, bekomme ich eine "Warning: SoapClient::__setSoapHeaders(): >>> Invalid SOAP header in ..." für die Zeile mit __setSoapHeaders.Das kann >>> ich nicht deuten. Hat das schonmal jemand von Euch so versucht? >> >> Wahrscheinlich nicht, denn im Handbuch (sogar ausnahmsweise in der >> deutschsprachigen Übersetzung) steht, weshalb das nicht funktionieren >> kann: >> >> ,-<http://php.net/manual/de/soapclient.setsoapheaders.php> >> | >> | soapheaders >> | Die zu setzenden Header. Dies kann ein SoapHeader-Objekt oder ein >> | Array von SoapHeader-Objekten sein. > > $header = new SoapVar($xml, XSD_ANYXML) ergibt ein SoapHeader-Objekt. Wie kommst Du darauf? -- 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 14:39 +0100 |
| Message-ID | <o6fii5$uuh$1@news.albasani.net> |
| In reply to | #4041 |
Thomas 'PointedEars' Lahn schrieb: > Ralph Stahl wrote: > >> Thomas 'PointedEars' Lahn schrieb: >>> Ralph Stahl wrote: >>>> Wenn ich aber nun wie in diesem Schnipsel angedeutet >>>> >>>> $header = new SoapVar($xml, XSD_ANYXML); >>>> $client->__setSoapHeaders($header); >>>> >>>> mache, bekomme ich eine "Warning: SoapClient::__setSoapHeaders(): >>>> Invalid SOAP header in ..." für die Zeile mit __setSoapHeaders.Das kann >>>> ich nicht deuten. Hat das schonmal jemand von Euch so versucht? >>> >>> Wahrscheinlich nicht, denn im Handbuch (sogar ausnahmsweise in der >>> deutschsprachigen Übersetzung) steht, weshalb das nicht funktionieren >>> kann: >>> >>> ,-<http://php.net/manual/de/soapclient.setsoapheaders.php> >>> | >>> | soapheaders >>> | Die zu setzenden Header. Dies kann ein SoapHeader-Objekt oder ein >>> | Array von SoapHeader-Objekten sein. >> >> $header = new SoapVar($xml, XSD_ANYXML) ergibt ein SoapHeader-Objekt. > > Wie kommst Du darauf? > Besser so? $header = new SoapHeader( $targetNameSpace, 'Header', array( new SoapVar($xml, XSD_ANYXML), SOAP_ENC_OBJECT ) ); Allerdings sagt $client->__setSoapHeaders($header); dann "Unknown Method" (d.h. der Fehlertext im catch() um alles)!? Ralph
[toc] | [prev] | [next] | [standalone]
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Date | 2017-01-27 14:47 +0100 |
| Message-ID | <7251441.T7Z3S40VBb@PointedEars.de> |
| In reply to | #4043 |
Ralph Stahl wrote: > Besser so? Ja, besser. > $header = new SoapHeader( > $targetNameSpace, > 'Header', > array( > new SoapVar($xml, XSD_ANYXML), > SOAP_ENC_OBJECT > ) > ); > > Allerdings sagt > > $client->__setSoapHeaders($header); > > dann "Unknown Method" (d.h. der Fehlertext im catch() um alles)!? 1. Das ist nicht die vollständige Fehlermeldung. 2. Die Position von SOAP_ENC_OBJECT sieht seltsam aus. 3. Bitte verwende keine Tabulator-Zeichen zur Einrückung. -- 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 15:10 +0100 |
| Message-ID | <o6fkd9$o8a$1@news.albasani.net> |
| In reply to | #4044 |
Thomas 'PointedEars' Lahn schrieb:
> Ralph Stahl wrote:
>
>> Besser so?
>
> Ja, besser.
>
>> $header = new SoapHeader(
>> $targetNameSpace,
>> 'Header',
>> array(
>> new SoapVar($xml, XSD_ANYXML),
>> SOAP_ENC_OBJECT
>> )
>> );
>>
>> Allerdings sagt
>>
>> $client->__setSoapHeaders($header);
>>
>> dann "Unknown Method" (d.h. der Fehlertext im catch() um alles)!?
>
> 1. Das ist nicht die vollständige Fehlermeldung.
Mehr steht nicht infolge
} catch(SoapFault $e) {
echo 'Fehler: ' . $e->getMessage();
}
> 2. Die Position von SOAP_ENC_OBJECT sieht seltsam aus.
Stimmt. Besser?
$header = new SoapHeader(
PORTA2_NS_TARGET,
'Header',
new SoapVar(array(
new SoapVar($xml, XSD_ANYXML)
),
SOAP_ENC_OBJECT
)
);
> 3. Bitte verwende keine Tabulator-Zeichen zur Einrückung.
Okay
>
[toc] | [prev] | [next] | [standalone]
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Date | 2017-01-27 16:40 +0100 |
| Message-ID | <1704671.PYKUYFuaPT@PointedEars.de> |
| In reply to | #4045 |
Ralph Stahl wrote:
> Thomas 'PointedEars' Lahn schrieb:
>> Ralph Stahl wrote:
>>> Allerdings sagt
>>>
>>> $client->__setSoapHeaders($header);
>>>
>>> dann "Unknown Method" (d.h. der Fehlertext im catch() um alles)!?
>>
>> 1. Das ist nicht die vollständige Fehlermeldung.
>
> Mehr steht nicht infolge
>
> } catch(SoapFault $e) {
> echo 'Fehler: ' . $e->getMessage();
> }
Deaktivier das nächste Mal Exception-Handling und poste die Exception –
nicht das, was Du daraus machst.
>> 2. Die Position von SOAP_ENC_OBJECT sieht seltsam aus.
>
> Stimmt. Besser?
Nein.
> $header = new SoapHeader(
> PORTA2_NS_TARGET,
> 'Header',
> new SoapVar(array(
> new SoapVar($xml, XSD_ANYXML)
> ),
> SOAP_ENC_OBJECT
> )
> );
Ich vermag bereits die Logik darin, eine SoapVar in einem Array in einer
SoapVar zu speichern, nicht zu erkennen. Wenn man das nach
Verschachtelungsebene einrückt, steht da nämlich:
$header = new SoapHeader(
PORTA2_NS_TARGET,
'Header',
new SoapVar(
array(
new SoapVar($xml, XSD_ANYXML)
),
SOAP_ENC_OBJECT
)
);
ISTM, dass Du beim Programmieren erheblich mehr Tee trinken[tm] solltest.
Ausserdem solltest Du einen Editor verwenden, der PHP unterstützt, damit Du
Flüchtigkeitsfehler eher erkennst. Ich empfehle dafür den von mir
verwendeten Atom.io, wobei die Zusatzpakete
· atom-php-navigation
· autocomplete-php
· hyperclick-php
· linter-php (mit dem *ich* Probleme habe, deshalb deaktiviert)
· php-debug (habe es noch nicht geschafft, dass es mit Xdebug
funktioniert)
· php-extract-method
· php-getters-setters
hilfreich sein könnten; andere Beispiele wurden kürzlich hier genannt.
--
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-28 11:38 +0100 |
| Message-ID | <o6hsbb$cpk$1@news.albasani.net> |
| In reply to | #4046 |
Thomas 'PointedEars' Lahn schrieb: > ISTM, dass Du beim Programmieren erheblich mehr Tee trinken[tm] > solltest. Statt zu sagen "du bist blöd" (oder besoffen), könntest du auch den Fehler freundlicherweise korrigieren. Du siehst doch, dass ich Mühe habe, mich an das für mich neue Thema ranzutasten. Must nicht gleich beleidigend sein, nur weil du möglicherweise mehr Ahnung hast. > Ausserdem solltest Du einen Editor verwenden, der PHP unterstützt, > damit Du Flüchtigkeitsfehler eher erkennst. Ist dir Netbeans brauchbar genug? Danke für deine bisherigen Versuche. Ralph
[toc] | [prev] | [next] | [standalone]
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Date | 2017-01-28 12:04 +0100 |
| Message-ID | <7287340.NyiUUSuA9g@PointedEars.de> |
| In reply to | #4047 |
Ralph Stahl wrote: > Thomas 'PointedEars' Lahn schrieb: >> ISTM, dass Du beim Programmieren erheblich mehr Tee trinken[tm] >> solltest. > > Statt zu sagen "du bist blöd" (oder besoffen), könntest du auch den > Fehler freundlicherweise korrigieren. Du siehst doch, dass ich Mühe > habe, mich an das für mich neue Thema ranzutasten. Must nicht gleich > beleidigend sein, nur weil du möglicherweise mehr Ahnung hast. kopfschüttelnd, -- 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 | "Christoph M. Becker" <cmbecker69@arcor.de> |
|---|---|
| Date | 2017-01-28 12:22 +0100 |
| Message-ID | <o6husl$21k$1@solani.org> |
| In reply to | #4046 |
Am 27.01.2017 um 16:40 schrieb Thomas 'PointedEars' Lahn: > Ich vermag bereits die Logik darin, eine SoapVar in einem Array in einer > SoapVar zu speichern, nicht zu erkennen. Wenn man das nach > Verschachtelungsebene einrückt, steht da nämlich: > > $header = new SoapHeader( > PORTA2_NS_TARGET, > 'Header', > new SoapVar( > array( > new SoapVar($xml, XSD_ANYXML) > ), > SOAP_ENC_OBJECT > ) > ); Ich habe noch nicht mit SOAP gearbeitet, aber Francesco Nardone[1] macht das auch so. > ISTM, dass Du beim Programmieren erheblich mehr Tee trinken[tm] solltest. Mir scheint, dass im SOAP Kapitel des PHP-Handbuchs erheblicher Verbesserungsbedarf besteht. Patches von SOAP-Kundigen sind gewiss willkommen. :) [1] <http://php.net/manual/en/soapvar.soapvar.php#114701> -- Christoph M. Becker
[toc] | [prev] | [next] | [standalone]
| From | Ralph Stahl <post@rstahl.de> |
|---|---|
| Date | 2017-01-28 12:58 +0100 |
| Message-ID | <o6i10d$vsf$1@news.albasani.net> |
| In reply to | #4049 |
Christoph M. Becker schrieb: > Am 27.01.2017 um 16:40 schrieb Thomas 'PointedEars' Lahn: > >> Ich vermag bereits die Logik darin, eine SoapVar in einem Array in einer >> SoapVar zu speichern, nicht zu erkennen. Wenn man das nach >> Verschachtelungsebene einrückt, steht da nämlich: >> >> $header = new SoapHeader( >> PORTA2_NS_TARGET, >> 'Header', >> new SoapVar( >> array( >> new SoapVar($xml, XSD_ANYXML) >> ), >> SOAP_ENC_OBJECT >> ) >> ); > > Ich habe noch nicht mit SOAP gearbeitet, aber Francesco Nardone[1] macht > das auch so. Und viele andere auch. Selbst dann, wenn es nur 1x SoapVar() gibt. Oder auch so [1] mit array(array()) - was ist nun das beste? Ich taste mich ran :)- > Mir scheint, dass im SOAP Kapitel des PHP-Handbuchs erheblicher > Verbesserungsbedarf besteht. Patches von SOAP-Kundigen sind gewiss > willkommen. :) > > [1] <http://php.net/manual/en/soapvar.soapvar.php#114701> > Danke, dem stimme ich vollumfänglich zu. Möglicherweise kümmert sich keiner (mehr) so recht drum, weil SOAP eben in die Jahre gekommen ist. VG Ralph [1] http://stackoverflow.com/questions/13465168/php-namespaces-in-soapheader-child-nodes
[toc] | [prev] | [next] | [standalone]
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Date | 2017-01-28 13:35 +0100 |
| Message-ID | <20355749.6Emhk5qWAg@PointedEars.de> |
| In reply to | #4049 |
Christoph M. Becker wrote: > Am 27.01.2017 um 16:40 schrieb Thomas 'PointedEars' Lahn: >> Ich vermag bereits die Logik darin, eine SoapVar in einem Array in einer >> SoapVar zu speichern, nicht zu erkennen. Wenn man das nach >> Verschachtelungsebene einrückt, steht da nämlich: >> >> $header = new SoapHeader( >> PORTA2_NS_TARGET, >> 'Header', >> new SoapVar( >> array( >> new SoapVar($xml, XSD_ANYXML) >> ), >> SOAP_ENC_OBJECT >> ) >> ); > > Ich habe noch nicht mit SOAP gearbeitet, aber Francesco Nardone[1] macht > das auch so. > […] > [1] <http://php.net/manual/en/soapvar.soapvar.php#114701> Nein. Wie man sehen kann, verwendet er ein Array, weil die Methode getStuff() seiner SOAP-Applikation ein Array aus *mehreren* (Filter)kriterien erfordert. >> ISTM, dass Du beim Programmieren erheblich mehr Tee trinken[tm] solltest. > > Mir scheint, dass im SOAP Kapitel des PHP-Handbuchs erheblicher > Verbesserungsbedarf besteht. Zum Beispiel? > Patches von SOAP-Kundigen sind gewiss willkommen. :) Auf mich kannst Du da nicht zählen :) -- 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 | "Christoph M. Becker" <cmbecker69@arcor.de> |
|---|---|
| Date | 2017-01-28 16:52 +0100 |
| Message-ID | <o6ien3$eb4$1@solani.org> |
| In reply to | #4052 |
Am 28.01.2017 um 13:35 schrieb Thomas 'PointedEars' Lahn: > Christoph M. Becker wrote: > >> Mir scheint, dass im SOAP Kapitel des PHP-Handbuchs erheblicher >> Verbesserungsbedarf besteht. > > Zum Beispiel? Allein schon, wenn ich mir die Menge an User-Kommentaren anschaue, dann scheint Bedarf zu bestehen, diese entweder in die eigentliche Doku einzupflegen oder zu löschen. Und die SoapVar::SoapVar() man page scheint sich selbst zu wiedersprechen. In Beispiel #1 wird als zweiter Parameter an den SoapVar Konstruktor SOAP_ENC_OBJECT übergeben, aber weiter oben ist $encoding wie folgt beschrieben: | The encoding ID, one of the XSD_... constants. Und wenn ich dann bei den vordefinierten Konstanten[1] nachschlage was SOAP_ENC_OBJECT bedeutet, dann finde ich keinerlei Beschreibung (wie bei allen anderen SOAP Konstanten auch; nur bei ein paar davon wird immerhin angegeben, wann sie eingeführt wurden). [1] <http://php.net/manual/en/soap.constants.php> -- Christoph M. Becker
[toc] | [prev] | [next] | [standalone]
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Date | 2017-01-28 16:59 +0100 |
| Message-ID | <40156846.fMDQidcC6G@PointedEars.de> |
| In reply to | #4055 |
Christoph M. Becker wrote: > Am 28.01.2017 um 13:35 schrieb Thomas 'PointedEars' Lahn: >> Christoph M. Becker wrote: >>> Mir scheint, dass im SOAP Kapitel des PHP-Handbuchs erheblicher >>> Verbesserungsbedarf besteht. >> Zum Beispiel? > > Allein schon, wenn ich mir die Menge an User-Kommentaren anschaue, dann > scheint Bedarf zu bestehen, diese entweder in die eigentliche Doku > einzupflegen oder zu löschen. ACK. > Und die SoapVar::SoapVar() man page Eine “man page” ist das nicht, aber ich weiss, was Du meinst. > scheint sich selbst zu wiedersprechen. In Beispiel #1 wird als zweiter > Parameter an den SoapVar Konstruktor SOAP_ENC_OBJECT übergeben, aber > weiter oben ist $encoding wie folgt beschrieben: > > | The encoding ID, one of the XSD_... constants. > […] ACK, das hatte mich auch verwirrt. -- 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-28 14:22 +0000 |
| Message-ID | <3t588ca8b5ia6fn3e8%sfroehli@Froehlich.Priv.at> |
| In reply to | #4049 |
On Sat, 28 Jan 2017 12:22:12 Christoph M. Becker wrote: > Mir scheint, dass im SOAP Kapitel des PHP-Handbuchs erheblicher > Verbesserungsbedarf besteht. Patches von SOAP-Kundigen sind gewiss > willkommen. :) Ich bin mir nicht sicher, ob nicht an SOAP per se erheblicher Verbesserungsbedarf bestünde (bislang hat mich jedenfalls noch niemand überzeugen können, dass der damit verbundene Aufwand (im Vergleich zu, sagen wir einmal, einer gängiten REST-API) irgendeinen praktisch relevanten Nutzen hat. Dummerweise (bzw. zum Glück für mich) war für "meine" SOAP-Anbindung keine Bearbeitung des Headers erforderlich, daher kann ich beim konkreten Problem nicht helfen. Servus, Stefan -- http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich Offizieller Erstbesucher(TM) von mmeike Der schnelle Freund verschenkt Stefan. Und Sie? (Sloganizer)
[toc] | [prev] | [next] | [standalone]
| From | Ralph Stahl <post@rstahl.de> |
|---|---|
| Date | 2017-01-28 12:36 +0100 |
| Message-ID | <o6hvna$31l$1@news.albasani.net> |
| In reply to | #4046 |
Thomas 'PointedEars' Lahn schrieb:
> Ralph Stahl wrote:
>
>> Thomas 'PointedEars' Lahn schrieb:
>>> Ralph Stahl wrote:
>>>> Allerdings sagt
>>>>
>>>> $client->__setSoapHeaders($header);
>>>>
>>>> dann "Unknown Method" (d.h. der Fehlertext im catch() um alles)!?
>>>
>>> 1. Das ist nicht die vollständige Fehlermeldung.
>>
>> Mehr steht nicht infolge
>>
>> } catch(SoapFault $e) {
>> echo 'Fehler: ' . $e->getMessage();
>> }
>
> Deaktivier das nächste Mal Exception-Handling und poste die Exception –
> nicht das, was Du daraus machst.
[faultstring] => "Unknown Method"
[faultcode] => "SOAP-ENV:Server"
+ noch ein ganzer Sack voll Botschaft vom installierten X-Debug, wenn
ich es lokal aufrufe.
Das macht mich auch nicht schlauer :-)
[toc] | [prev] | [next] | [standalone]
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Date | 2017-01-28 13:37 +0100 |
| Message-ID | <1639309.CQOukoFCf9@PointedEars.de> |
| In reply to | #4050 |
Ralph Stahl wrote:
> Thomas 'PointedEars' Lahn schrieb:
>> Ralph Stahl wrote:
>>> Mehr steht nicht infolge
>>>
>>> } catch(SoapFault $e) {
>>> echo 'Fehler: ' . $e->getMessage();
>>> }
>>
>> Deaktivier das nächste Mal Exception-Handling und poste die Exception –
>> nicht das, was Du daraus machst.
>
> [faultstring] => "Unknown Method"
> [faultcode] => "SOAP-ENV:Server"
>
> + noch ein ganzer Sack voll Botschaft vom installierten X-Debug, wenn
> ich es lokal aufrufe.
Genau der „[ganze] Sack voll Botschaft“ wäre das Wesentliche an der
Exception gewesen.
Ist aber jetzt nicht mehr wichtig, die Ursache (falscher Datentyp) ist ja
offensichtlich.
> Das macht mich auch nicht schlauer :-)
Hoffentlich jetzt.
--
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-28 19:30 +0100 |
| Message-ID | <o6io03$5b4$1@news.albasani.net> |
| In reply to | #4053 |
Thomas 'PointedEars' Lahn schrieb:
> Ralph Stahl wrote:
>
>> Thomas 'PointedEars' Lahn schrieb:
>>> Ralph Stahl wrote:
>>>> Mehr steht nicht infolge
>>>>
>>>> } catch(SoapFault $e) {
>>>> echo 'Fehler: ' . $e->getMessage();
>>>> }
>>>
>>> Deaktivier das nächste Mal Exception-Handling und poste die Exception –
>>> nicht das, was Du daraus machst.
>>
>> [faultstring] => "Unknown Method"
>> [faultcode] => "SOAP-ENV:Server"
>>
>> + noch ein ganzer Sack voll Botschaft vom installierten X-Debug, wenn
>> ich es lokal aufrufe.
>
> Genau der „[ganze] Sack voll Botschaft“ wäre das Wesentliche an der
> Exception gewesen.
Online habe ich kein X-Debug, nur lokal, und der Sack voll besteht im
Wesentlichen aus Stacktrace, was mich nur zu obiger Fehler-erzeugenden
Zeile führt. Das Kernstück "SOAP-ENV:Server" bleibt mir ein Rätsel.
Ralph
[toc] | [prev] | [next] | [standalone]
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Date | 2017-01-28 21:10 +0100 |
| Message-ID | <1771710.oMNUckLgyt@PointedEars.de> |
| In reply to | #4057 |
Ralph Stahl wrote:
> Thomas 'PointedEars' Lahn schrieb:
>> Ralph Stahl wrote:
>>> Thomas 'PointedEars' Lahn schrieb:
>>>> Ralph Stahl wrote:
>>>>> Mehr steht nicht infolge
>>>>>
>>>>> } catch(SoapFault $e) {
>>>>> echo 'Fehler: ' . $e->getMessage();
>>>>> }
>>>>
>>>> Deaktivier das nächste Mal Exception-Handling und poste die Exception –
>>>> nicht das, was Du daraus machst.
>>>
>>> [faultstring] => "Unknown Method"
>>> [faultcode] => "SOAP-ENV:Server"
>>>
>>> + noch ein ganzer Sack voll Botschaft vom installierten X-Debug, wenn
>>> ich es lokal aufrufe.
>>
>> Genau der „[ganze] Sack voll Botschaft“ wäre das Wesentliche an der
>> Exception gewesen.
>
> Online habe ich kein X-Debug, nur lokal,
Das spielt hier zwar keine Rolle, aber <https://xdebug.org/docs/remote>
existiert.
> und der Sack voll besteht im Wesentlichen aus Stacktrace, was mich nur zu
> obiger Fehler-erzeugenden Zeile führt.
Der Stacktrace führte Dich (und uns) eben zur *tatsächlich* den Fehler
erzeugenden Zeile, wenn Du das Exception-Handling *deaktivieren* würdest,
d. h. die Zeilen mit “try” und “catch” *auskommentierst*:
// try {
/* blubb */
// } catch (…) {
echo 'Fehler: ' . $e->getMessage();
// }
Das ist in PHP nicht wesentlich anders als in anderen Programmiersprachen,
die Exceptions unterstützen.
--
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]
Page 1 of 2 [1] 2 Next page →
Back to top | Article view | de.comp.lang.php
csiph-web