php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.12.2010, 12:16  
Neuer Benutzer
 
Registriert seit: 10.12.2010
Beiträge: 7
PHP-Kenntnisse:
Anfänger
OnerOrk befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] wsdl füllen

Moin,

zunächst mal Grüße und herzlichen Dank an alle die hier so selbstlos mit Rat und Tat zur Seite stehen. Ich habe mich gerade neu angemeldet muss aber gestehen, dass ich dann und wann schon Infos aus eurem Forum verwendet habe. Bisher brauchte ich mich nicht anmelden weil alle meine Probleme schnell durch die Suche gelöst werden konnten. Mir ist aber klar, dass das keine Einbahnstraße ist und so will ich versuchen mich auch mit meinem KnowHow hier zu beteiligen.

Leider muss ich erst mal wieder gleich mit einer Frage anfangen weil alle Suchen immer irgendwie ins leere laufen. Ich bearbeite ein größeres Projekt in dem Daten von einem online Shop per SOAP in eine WAWI übertragen werden sollen. Die Schnittstelle ist von Seiten der WAWI vorgegeben und dort bereits implementiert. Dabei arbeite ich dort mit einer .wsdl in Zusammenhang mit einer .xsd als Schema des ganzen.

Den gesamten Code der beiden Dateien zu schicken wäre etwas viel deshalb nur Auszüge: in der .wsdl gibt es eine Methode retrunBestellung

PHP-Code:
<wsdl:message name="getBestellung">
        <
wsdl:part name="data" element="my:bestellung"/>
    </
wsdl:message
in der .xsd ist bestellung so beschrieben:

PHP-Code:
<xs:element name="bestellung">
        <
xs:complexType>
            <
xs:sequence>
                <
xs:sequence>
                    
                    <
xs:element name="idf" type="my:idf"/>
                    <
xs:element name="version" type="xs:string" fixed="2.1"/>
                </
xs:sequence>
                <
xs:choice>
                    <
xs:element name="daten" type="xs:base64Binary">
                        
                    </
xs:element>
                </
xs:choice>
            </
xs:sequence>
        </
xs:complexType>
    </
xs:element
das Element daten hat folgenden Aufbau:

PHP-Code:
<xs:element name="bestelldaten">
        
        <
xs:complexType>
            <
xs:sequence>
                <
xs:element name="idf" type="iks:idf">
                    
                </
xs:element>
                <
xs:element name="nr" type="xs:positiveInteger">
                    
                </
xs:element>
                <
xs:element name="mail" type="xs:string">
                    
                </
xs:element>
                <
xs:element name="shopversion" type="xs:string">
                    
                </
xs:element>
                <
xs:element name="bestellzeit" type="xs:dateTime"/>
                <
xs:element name="kundennummer" type="iks:kundennummer">
                    
                </
xs:element>
                <
xs:element name="auftragsnummer" type="iks:auftragsnummer">
                    
                </
xs:element>
                <
xs:element name="kommentar" type="iks:kommentar" minOccurs="0" maxOccurs="unbounded"/>
........
</
xs:sequence>
        </
xs:complexType>
    </
xs:element
so weit so gut funzt auch alles recht annehmbar. Zumindest in der ersten Ebene. Soll heißen ich befülle den Response per .wsdl auf folgende weise:

PHP-Code:
public function getBestellung(){
    
    
$bestellung = array(
                    
'idf' => '1234567',
                    
'version' => '2.1',
                    
'daten' => array(
                                
'idf' => '1234567',
                                
'aponr' => '4711',
                                
'apomail' => self::$apoMail
                                
'shopversion' => '1.5',
                                
'bestellzeit' => '2006-12-12T08:00:00',
                                
'kundennummer' => '4711',
                                
'auftragsnummer' => '0815',
                                
'kommentar' => 'kein Kommentar',
                                
                    )
                   ); 
wie gesagt alles hier zu posten würde den Rahmen sprengen es gibt eine Serverklasse und die Verbindung zur Soap steht auch. Das habe ich sowohl über eine einfache client.php direkt im Browser als auch über den WebServiceExplorer in Eclipse geprüft. Die "idf" und "version" wird richtig angesprochen und ich bekomme auch die korrekten Werte angezeigt.

So viel zur Vorgeschichte nun mein eigentliches Problem mit dem ich mich schon die ganze Woche beschäftige Wie kann ich "daten" richtig befüllen? Anscheinend habe ich mir das mit dem zweidimensionalen array etwas einfach gemacht. Erschwerend kommt noch hinzu, dass in "daten" noch einige <complexType> enthalten sind die nach meiner Methode wieder über ein Array befüllt werden müssten. Aber ich denke wenn ich das in einer Ebene geschafft habe ist es egal wie viele Unterebenen es gibt.

Über print_r() lasse ich mir die Antwort des SOAP - Server ausgeben die sieht folgender maßen aus:

stdClass Object
(
[idf] => 1234567
[version] => 2.1
[daten] => Array
)

deshalb gehe ich davon aus, dass das [daten] Array nicht richtig gefüllt ist, denn sonnst müsste ich ja diese auch Angezeigt bekommen.

Ich weiß das alles ist sehr komplex und deshalb auch nicht so einfach zu beschreiben. Auf den Punkt gebracht suche eine Möglichkeit einen <complexType> innerhalb eines <complexType> richtig zu befüllen. Wenn jemand mein Kauderwelsch verstanden hat währe ich für jeden Denkanstoß dankbar.

vielen Dank
OnerOrk ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 10.12.2010, 13:21  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

haste mal einen var_dump statt einem print_r gemacht? Sieht so aus als wenn "daten" an irgendeiner Stelle in einen String konvertiert wird
cycap ist offline   Mit Zitat antworten
Alt 10.12.2010, 14:30  
Neuer Benutzer
 
Registriert seit: 10.12.2010
Beiträge: 7
PHP-Kenntnisse:
Anfänger
OnerOrk befindet sich auf einem aufstrebenden Ast
Standard

Hi cycap,

danke für die schnelle Antwort .... var_dump() ergibt string(5) "Array"
Du hast also durchaus recht. Da wird irgendwann ein String aus dem Array nur wann und wo?? Kann es mit dem Datenformat "base64Binary" zusammen hängen? Aber über ein base64_decode() kriege ich auch keine anderen Daten angezeigt nur n Warning.

Ich weiß nicht wie ich einen anständigen Response hin kriege Wie gesagt die ersten beiden Felder werden mir korrekt angezeigt und ausgegeben. Siehst Du anhand meiner Codeschnippsel wo die Umwandlung in einen String sein könnte oder hast Du noch irgend einen anderen Gedankengang auf lager den ich verfolgen könnte?
OnerOrk ist offline   Mit Zitat antworten
Alt 10.12.2010, 14:36  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Sorry, aber bei meiner Glaskugel ist gerade der akku leer. Woher soll ich wissen was mit deinem Array noch angestellt wird? muss ja irgendwo zwischen dem var_dump und der Erstellung passieren...
cycap ist offline   Mit Zitat antworten
Alt 10.12.2010, 15:04  
Neuer Benutzer
 
Registriert seit: 10.12.2010
Beiträge: 7
PHP-Kenntnisse:
Anfänger
OnerOrk befindet sich auf einem aufstrebenden Ast
Standard

Sorry,

dachte anhand meiner Codeschnippsel könntest du irgendwo erkennen wo eine Umwandlung statt findet. Kann ja nur in der wsdl oder der xsd sein. Was anderes ist ja nicht mehr da zwischen. Ich starre da schon seit einer Woche drauf langsam kann ich den ganzen Code auswendig und selbst wenn ich nachvollziehen kann was wo geschieht kann ich diese Umwandlung nicht finden.

In solchen Situationen wird man schnell "Betriebsblind" wenn man zum 7653 Mal die selben Zeilen durchforstet liest man meist nicht mehr. Schon ne komische Sache mit dem menschlichen Geist .

Nur als theoretische Frage. Wäre es denkbar, dass im Schema aus base64Binary ein einfacher String wird?? Und warum ist dann der String "Array" auch noch mit großem Anfangsbuchstaben?? Ich glaub ich mach Feierabend und guck heute Abend nach dem 5 Bier noch mal drauf. Wahrscheinlich fällt dann sofort der Groschen

prost und Danke
OnerOrk ist offline   Mit Zitat antworten
Alt 10.12.2010, 15:08  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von OnerOrk Beitrag anzeigen
Und warum ist dann der String "Array" auch noch mit großem Anfangsbuchstaben??
Weil die toString-Methode eines Arrays nun mal genau diesen Wert liefert.
Irgendwo bringst du also das Array in einen String-Kontext.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 12.12.2010, 17:07  
Neuer Benutzer
 
Registriert seit: 10.12.2010
Beiträge: 7
PHP-Kenntnisse:
Anfänger
OnerOrk befindet sich auf einem aufstrebenden Ast
Standard danke

Also erst mal denke für die Hilfe aber ich habe wohl einfach nur die falschen Suchbegriffe benutzt. Mein Problem ist hier (Über SOAP Arrays bzw. Complex Types zurückgeben) bereits gelöst worden. Das Zauberwort heißt
PHP-Code:
new SoapVar() 
Danke für die Hilfe
OnerOrk ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
WSDL Zugriff SOAP (Authenifizierung) PatrickStar88 PHP-Fortgeschrittene 1 01.12.2010 12:24
input Feld per Button Klick füllen: noop JavaScript, Ajax und mehr 10 16.08.2010 12:48
[Erledigt] leeres iframe füllen bwoebi JavaScript, Ajax und mehr 11 09.07.2010 15:12
aray aus db füllen ? hups PHP Tipps 2010 3 06.06.2010 13:16
[Erledigt] PHP::SOAP wsdl über https lesen neroza PHP-Fortgeschrittene 2 04.05.2010 12:05
Variable Füllen mit Smarty jayjoy PHP Tipps 2009 9 08.01.2010 13:10
SoapClient howto handle WSDL not found! metashock PHP-Fortgeschrittene 4 07.10.2009 15:22
[Erledigt] Dropdown mit Werten aus mySQL Tabelle füllen PHP Tipps 2005 18 11.06.2009 10:46
array mit anderem array füllen Jojo_44 PHP Tipps 2008 3 07.12.2008 14:21
[Erledigt] Problem mit dem Füllen einer Tabelle über Formular PHP Tipps 2006 18 10.01.2006 12:51
dropdown menü mit werten aus db füllen LA-Finest PHP Tipps 2005-2 4 10.06.2005 13:19
Füllen eines PDF Formulars PHP Tipps 2005 2 27.02.2005 22:09
Array füllen und ausgeben PHP Tipps 2005 6 24.02.2005 14:33
Auswahlfeld abhängig von anderem Auswahlfeld füllen PHP Tipps 2004-2 4 07.12.2004 11:54
Problem beim Füllen von Formularfeldern aus Datenbank PHP Tipps 2004 3 25.06.2004 13:44

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
wsdl array beschreiben, base64binary wsdl problem, php soap wsdl mit daten füllen, xs:base64binary php java soap, php base64binary wsdl, soap wsdl daten struktur php howto, php wsdl, php wsdl ein element im array, wsdl zu php, wsdl string übertragen, wsdl sequence php, wsdl s:base64binary php, wsdl inhalt mit javascript füllen, element wsdl php, stdclass object php wsdl, php soapserver liefert leere stdclass, wsdl befüllen, wsdl string array, wsdl in php befüllen, base64binary php pdf ausgeben

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:17 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum