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


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

SoapHeader direkt aus XML erstellen

Started byRalph Stahl <post@rstahl.de>
First post2017-01-25 19:56 +0100
Last post2017-01-30 09:43 +0100
Articles 20 on this page of 28 — 4 participants

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


Contents

  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 →


#4035 — SoapHeader direkt aus XML erstellen

FromRalph Stahl <post@rstahl.de>
Date2017-01-25 19:56 +0100
SubjectSoapHeader 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]


#4038

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2017-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]


#4039

FromRalph Stahl <post@rstahl.de>
Date2017-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]


#4041

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2017-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]


#4043

FromRalph Stahl <post@rstahl.de>
Date2017-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]


#4044

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2017-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]


#4045

FromRalph Stahl <post@rstahl.de>
Date2017-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]


#4046

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2017-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]


#4047

FromRalph Stahl <post@rstahl.de>
Date2017-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]


#4048

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2017-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]


#4049

From"Christoph M. Becker" <cmbecker69@arcor.de>
Date2017-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]


#4051

FromRalph Stahl <post@rstahl.de>
Date2017-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]


#4052

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2017-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]


#4055

From"Christoph M. Becker" <cmbecker69@arcor.de>
Date2017-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]


#4056

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2017-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]


#4054

FromStefan+Usenet@Froehlich.Priv.at (Stefan Froehlich)
Date2017-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]


#4050

FromRalph Stahl <post@rstahl.de>
Date2017-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]


#4053

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2017-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]


#4057

FromRalph Stahl <post@rstahl.de>
Date2017-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]


#4058

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2017-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