Comment puis-je analyser cette réponse de nusoap à une variable php/tableau
Afin d'avoir réussi à la fissure se nusoap à interroger le chemspider server pour plus d'informations, cependant je reçois une réponse qui permettra d'afficher à l'aide de print_r mais lors de l'utilisation de l'impression se contente d'afficher le Tableau.
Ma question est-ce vraiment, comment dois-je prendre le donné de réponse et de le transformer en un tableau php
Le code de la nusoap client
<?php
require_once('../lib/nusoap.php');
$client = new nusoap_client('http://www.chemspider.com/Search.asmx?WSDL', 'wsdl');
$err = $client->getError();
if ($err) {
echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
}
$query = 'methanol';
$token = 'token';
$result = $client->call(SimpleSearch, array('query' => $query, 'token' => $token), array('return' => 'xsd:string'), "http://www.chemspider.com/SimpleSearch") ;
//Check for a fault
if ($client->fault) {
echo '<h2>Fault</h2><pre>';
print_r($result);
echo '</pre>';
} else {
//Check for errors
$err = $client->getError();
if ($err) {
//Display the error
echo '<h2>Error</h2><pre>' . $err . '</pre>';
} else {
//Display the result
echo '<h2>Result</h2><pre>';
print_r($result);
echo '</pre>';
}
}
echo '<h2>Request</h2><pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>';
echo '<h2>Response</h2><pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>';
echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '</pre>';
?>
Cela donne le résultat suivant (moins les informations de débogage):
Result
Array
(
[SimpleSearchResult] => Array
(
[int] => 864
)
)
Request
POST /Search.asmx HTTP/1.0
Host: www.chemspider.com
User-Agent: NuSOAP/0.7.3 (1.114)
Content-Type: text/xml; charset=ISO-8859-1
SOAPAction: "http://www.chemspider.com/SimpleSearch"
Content-Length: 489
<?xml version="1.0" encoding="ISO-8859-1"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns8284="Array"><SOAP-ENV:Body><SimpleSearch xmlns="http://www.chemspider.com/"><query>methanol</query><token>token</token></SimpleSearch></SOAP-ENV:Body></SOAP-ENV:Envelope>
Response
HTTP/1.1 200 OK
x-cspc-fd: search.asmx
x-cspc-fh: chemspider
x-orig-path: /Search.asmx
Set-Cookie: x-dsp=
Set-Cookie: x-d-ond=dond
Set-Cookie: X-Mapping-kckcchol=47DE43E9D82204D9CDBBD4A2610306B8; path=/
Cache-Control: private, max-age=0
x-cspc-pl: 0
Content-Length: 381
x-cspc-hs: chemspider.com
Date: Thu, 24 Sep 2009 08:54:01 GMT
x-bwcc: pub
x-dsp: [][]
Connection: close
X-AspNet-Version: 2.0.50727
x-cspc-pt: /Search.asmx
Z-Spider: Hunstman-32-1
x-orig-host: chemspider.com
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Content-Type: text/xml; charset=utf-8
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><SimpleSearchResponse xmlns="http://www.chemspider.com/"><SimpleSearchResult><int>864</int></SimpleSearchResult></SimpleSearchResponse></soap:Body></soap:Envelope>
- Votre question est mal, il me semble. Vous avez déjà parfaitement utilisable tableau, à savoir $résultat. Votre question semble être: "Pourquoi est-elle sortie 'Array' quand j'ai echo $result; ?". Voir ma réponse ci-dessous.
- En effet. Je voulais simplement avoir de la difficulté à comprendre ce qui a été à l'origine du problème
Vous devez vous connecter pour publier un commentaire.
Dans le script que vous utilisez, la réponse a déjà été analysé à un tableau PHP appelé $result. Vous avez déjà le tableau imprimé sur la sortie ainsi.
Votre question est, autant que je peux voir, le fait que print() et echo() ne fonctionnent pas bien sur les tableaux. Ils ont simplement la sortie du type (Array) au lieu de le contenu.
Vous pouvez appeler la sortie de $résultat avec
Vous pouvez en lire plus sur le PHP du tableau de manutention dans le Manuel PHP.
vous souhaitez analyser l' $client->réponse ? essayez explode ('\n', $client->réponse) et explode(': ', $each_string)