PHP e SOAP

lostedsheep

Nuovo Utente
30 Nov 2010
18
0
0
Buongiorno a tutti! Sono fresco fresco di registrazione e spero di trovare risposta per il mio problema. Sto utilizzando una libreria che invoca un webservice e restiutuisce un SOAP message come risultato dell'invocazione (un esempio del messaggio è il seguente)

Codice:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
	<soap:Body>
		<ns2:getStatsDataResponse xmlns:ns2="http://analytics.services.org/">
			<statsData>
				<columns>Foldername</columns>
				<columns>Channelname</columns>
				<rows>
					<cells>Generico</cells>
					<cells>HOME</cells>
				</rows>
				<rows>
					<cells>Keyadv</cells>
					<cells>HOME</cells>
				</rows>
				<rows>
					<cells>Preferiti</cells>
					<cells>HOME</cells>
				</rows>
			</statsData>
		</ns2:getStatsDataResponse>
	</soap:Body>
</soap:Envelope>

Mi chiedevo, perchè da me (facendo diverse ricerche e prove) non ci sono riuscito, se esiste un modo di estrarre il body dal messaggio ricevuto in particolare se posso trasformare la risposta in xml così da navigare tra i vari nodi. Grazie per le eventuali risposte.
 

lostedsheep

Nuovo Utente
30 Nov 2010
18
0
0
La libreria è proprietaria sviluppata all'interno dell'azienda in cui lavoro.
E' scritta in php ed ha una sola funzione call che accetta un numero di parametri variabile con i quali costruisce un soap message. Invoca il web service e se tutto è andato a buon fine inoltre il soap message di risposta dal web service al chiamante. Tutto qui
 

Trogo

Utente Attivo
11 Gen 2008
370
0
0
43
Sanremo
Se il problema di fondo è trasformare la risposta in XML sei a cavallo: la risposta è già in formato XML.

Esempio:

PHP:
<?php

$message = <<<SOAP
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
	<soap:Body>
		<ns2:getStatsDataResponse xmlns:ns2="http://analytics.services.org/">
			<statsData>
				<columns>Foldername</columns>
				<columns>Channelname</columns>
				<rows>
					<cells>Generico</cells>
					<cells>HOME</cells>
				</rows>
				<rows>
					<cells>Keyadv</cells>
					<cells>HOME</cells>
				</rows>
				<rows>
					<cells>Preferiti</cells>
					<cells>HOME</cells>
				</rows>
			</statsData>
		</ns2:getStatsDataResponse>
	</soap:Body>
</soap:Envelope>
SOAP;

$xml = simplexml_load_string($message);
$xml->registerXPathNamespace('soap', 'http://schemas.xmlsoap.org/soap/envelope/');
$xml->registerXPathNamespace('ns2', 'http://analytics.services.org/');

echo '<table><thead>';
foreach( $xml->xpath('/soap:Envelope/soap:Body/ns2:getStatsDataResponse/statsData/columns') as $children) {
	echo '<th>' . (string)$children . '</th>';
}
echo '</thead><tbody>';


foreach( $xml->xpath('/soap:Envelope/soap:Body/ns2:getStatsDataResponse/statsData/rows') as $children) {
	echo '<tr>';
	foreach( $children->xpath('cells') as $child ) {
		echo '<td>' . (string)$child . '</td>';
	}
	echo '</tr>';
}
echo '</tbody></table>';

?>
 
Ultima modifica:

lostedsheep

Nuovo Utente
30 Nov 2010
18
0
0
Beh a dire il vero ho provato la tua soluzione, perchè appunto il soap message non è altro che un xml, però io faccio così

Codice:
<?php
  ... creo istanza per fare la chiamata ...
  $result = $myobj->call(...);

  $str = <<<XML
  $result
  XML;
  ...
?>

andrebbe bene uguale? posso usare $result per creare $str. Scusate ma col php non sono molto ferrato. Grazie
 

Trogo

Utente Attivo
11 Gen 2008
370
0
0
43
Sanremo
Dipende da cosa ritorna la chiamata $myobj->call(...).
Se il tipo ritornato è una stringa, allora puoi fare direttamente così:

PHP:
$result = $myobj->call(...);

$xml = simplexml_load_string($result);

Se invece è un oggetto, dipende dal tipo. Per vedere che tipo è $result puoi usare var_dump:

PHP:
$result = $myobj->call(...);
var_dump($result);
 

lostedsheep

Nuovo Utente
30 Nov 2010
18
0
0
Ragazzi siete mitici, non appena sono arrivato ho provato subito la vostra soluzione ed ha funzionato alla GRANDE!!! Grazie infinite e a presto
 

lostedsheep

Nuovo Utente
30 Nov 2010
18
0
0
Senz'altro!!! Con immenso piacere e lo farò volentieri vista la vostra disponibilità, serietà, professionalità e simpatia :) Grazie di tutto
 
Discussioni simili
Autore Titolo Forum Risposte Data
M PHP e chiamata SOAP PHP 6
W [PHP] Login sicuro al web Service SOAP PHP 20
W PHP Webservices SOAP, struttura file wsdl XML 4
R [PHP] Iniziare con i web services - Soap PHP 0
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0

Discussioni simili