php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 11.03.2011, 11:56  
Neuer Benutzer
 
Registriert seit: 09.03.2011
Beiträge: 8
PHP-Kenntnisse:
Anfänger
paos befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] (Nu)SOAP Rückgabe als Array

Hallo zusammen,

ich schlage mich gerade mit einem Webservice herum, der als Antwort eine Liste mit Daten zurückgeben soll.

Neben der Liste soll alternativ auch noch eine Bestätigung bzw. eine Fehlerbeschreibung zuurückgegeben werden. Die Implementierung habe ich mit NuSOAP vorgenommen, aber evntl. ist das "Problem" auch einfacher und ich stehe einfach nur auf dem Schlauch.

Der Server inkl. Beschreibung der Complex-Types für Ein- und Ausgabe
PHP-Code:
    $server->wsdl->addComplexType('wsListPurchasesInputCT','complexType','struct','all','',
        array(
            
'loginEmail' => array('name' => 'loginEmail','type' => 'xsd:string'), 
            
'loginSessionID' => array('name' => 'loginSessionID','type' => 'xsd:int')
        ));         
    
$server->wsdl->addComplexType('wsListPurchasesReturnCT','complexType','struct','all','',
        array(
            
'listPurchasesError' => array('name' => 'listPurchasesError','type' => 'xsd:string'), 
            
'listPurchases' => array('name' => 'listPurchases','type' => 'xsd:string'),        
            
'listPurchasesConfirm' => array('name' => 'listPurchasesConfirm','type' => 'xsd:boolean')
        )); 
        
    
$server->register(
        
'wsListPurchases',
        array(
'listPurchasesInputArray'=>'tns:wsListPurchasesInputCT'), //Eingabeparameter (s.o.)
        
array('return'=>'tns:wsListPurchasesReturnCT'), //Rückgabe (s.o.)
        
$namespacefalse'rpc''literal'
        
'#8'); // Beschreibung 
Die Methode (Demowerte)
PHP-Code:
    function wsListPurchases($listPurchasesInputArray){
        
$listPurchasesError "Fehlermeldung";
        
$listPurchasesConfirm true;            
        
$listPurchases = array(
            
'wert1' => "text 1",
            
'wert2' => "text 2",
            
'wert3' => "text 3",
            
'wert4' => "text 4",
            
'wert5' => "text 5",
            
'wert6' => "text 6",                
            
'wert7' => "text 7");
        return 
$returnArray = array('listPurchasesError' => $listPurchasesError'listPurchases' => $listPurchases'listPurchasesConfirm' => $listPurchasesConfirm);
    } 
Der Client inkl. der kompletten Antwort und des Ausgebens des Arrays
PHP-Code:
    $inputArray_08 = array('loginEmail' => "max@mustermann.de"'loginSessionID' => "12345");
    
$response_08 $SOAPClient->wsListPurchases($inputArray_08);
    
var_dump($response_08);
    
    
$listPurchaseArray $response_08->listPurchases;
    
var_dump($response_08->listPurchases); 
Die Ausgaben des Clients:
Zitat:
object(stdClass)#3 (3) {
["listPurchasesError"]=>
string(13) "Fehlermeldung"
["listPurchases"]=>
string(5) "Array"
["listPurchasesConfirm"]=>
bool(true)
}
string(5) "Array"
Wie man sehen kann, funktioniert der Service insofern, dass die Objekte zurückgegeben werden. Die Rückgabe "listPurchases" sollte jetzt die Array-Werte beinhalten. Aktuell habe ich diese Variable im ComplexType ja aber als xsd:string deklariert, daher vermute ich, dass dort sowas wie "xsd:array" o.ä. stehen müsste. Also entweder ist die Deklaration falsch oder ich mache einen anderen Fehler beim Auslesen. Übertragen wird ja ganz klar ein Array?!

Alternativ kann ich mir aber auch gut vorstellen, die Daten vor der Rückgabe in ein XML-Format zu pressen und dann als String zurückzugeben. Ein erster Versuch schlug allerdings fehl, da sämtliche Spitzen-Klammern des XMLs geparst wurden. Wie ist es üblich ein XML per SOAP zu versenden? Codiere ich das XML in base64 oder packe es in irgendeine eine Hülle?

Wäre toll, wenn mir jemand einen Tipp dazu geben könnte - Vielen Dank!
paos ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 11.03.2011, 12:11  
Erfahrener Benutzer
 
Registriert seit: 02.09.2009
Beiträge: 1.019
PHP-Kenntnisse:
Fortgeschritten
mquadrat befindet sich auf einem aufstrebenden Ast
Standard

Jep, dein Typ ist falsch. Muss als Array deklariert werden. Je nachdem was im Array ist halt als Array eines der nativen Typen oder eines neuen komplexen Typen.
__________________
Wir suchen PHP Entwickler (Vollzeit) im Raum Darmstadt / Rhein-Main. Infos via E-Mail mueller@new-frontiers.de
mquadrat ist offline   Mit Zitat antworten
Alt 11.03.2011, 12:22  
Neuer Benutzer
 
Registriert seit: 09.03.2011
Beiträge: 8
PHP-Kenntnisse:
Anfänger
paos befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von mquadrat Beitrag anzeigen
Jep, dein Typ ist falsch. Muss als Array deklariert werden. Je nachdem was im Array ist halt als Array eines der nativen Typen oder eines neuen komplexen Typen.
Danke. Parallel hatte ich auch die selbe Eingebung.

Dioe Lösung ist dann einfach eine weitere Verschachtelung und sieht dann wie folgt aus:

Deklarierung des Typs
PHP-Code:
'listPurchases' => array('name' => 'listPurchases','type' => 'tns:assetDetails'), 
Detaildeklarierung des Arrays
PHP-Code:
    $server->wsdl->addComplexType('assetDetails''complexType''struct''all''',
        array(
                
'wert1' => array('name' => 'wert1','type' => 'xsd:string'),
                
'wert2' => array('name' => 'wert2','type' => 'xsd:string'),
                
'wert3' => array('name' => 'wert3','type' => 'xsd:string'),
                
'wert4' => array('name' => 'wert4','type' => 'xsd:string'),
                
'wert5' => array('name' => 'wert5','type' => 'xsd:string'),
                
'wert6' => array('name' => 'wert6','type' => 'xsd:string'),
                
'wert7' => array('name' => 'wert7','type' => 'xsd:string'),)
        ); 
paos ist offline   Mit Zitat antworten
Alt 18.03.2011, 17:13  
Neuer Benutzer
 
Registriert seit: 09.03.2011
Beiträge: 8
PHP-Kenntnisse:
Anfänger
paos befindet sich auf einem aufstrebenden Ast
Standard

kT.

Geändert von paos (21.03.2011 um 22:00 Uhr). Grund: Hat sich erledigt.
paos 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
Array aus SQL Abfrage zusammenbauen um es rekursiv abzuarbeiten litterauspirna PHP Einsteiger 7 01.02.2011 18:44
Array werte zusammen rechnen fabi288 PHP Einsteiger 13 03.01.2011 16:08
mehrdimensionales array inhalte tauschen pidaman PHP Tipps 2010 18 27.08.2010 16:58
Feed in Datenbank eintragen (Formate: json, php serialized, xml) high_five Datenbanken 5 17.06.2010 03:04
[Erledigt] Sortierung mehrerer Arrays philosapiens PHP Tipps 2010 16 08.06.2010 05:22
IE8 verliert Session Lenki PHP-Fortgeschrittene 10 25.04.2010 01:10
[Erledigt] Problem bei update mit array feldern fulltilt PHP Tipps 2010 6 13.02.2010 00:59
[Erledigt] Tabellen die sich selbst referenzieren Squall PHP Tipps 2009 19 04.08.2009 21:33
Array umwandeln von zwei zu mehrdimensional erselbst PHP Tipps 2009 6 02.04.2009 23:30
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
soap liste, soap array, xsd array, soap rückgabe array, soap rückgabetypen, soap rückgabe, php soap list, xsd:array, php soap array, soap list php, soap mehrdimensionales array, xsd:struct php array, literal soap string array, webservice nusoap xml spitze klammern, php soap return list, nusoap rückgabe, soap rpc literal array, php arrays rückgabe, nusoap server zum übertragen von dateien addcomplextype -humbug, php soap typen

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:30 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