Wie kann ich analysieren diese Antwort von nusoap auf eine php-variable/array
So, dass wir es geschafft haben Sie zu knacken, immer nusoap Umfrage der chemspider-server für die Informationen, jedoch bekomme ich eine Antwort, die zeigt mit print_r aber bei der Verwendung von print wird einfach die Anzeige-Array.
Meine Frage ist eigentlich, wie nehme ich die gegebene Antwort und schalten Sie es in einen php-array
Den code für die 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>';
?>
Dies gibt die folgende Ausgabe (ohne debug-Daten):
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>
- Ihre Frage ist falsch, es scheint. Sie haben bereits eine brauchbare array, nämlich $Ergebnis. Ihre Frage scheint zu sein, "Warum es die Ausgabe 'Array', wenn ich echo $Ergebnis; ?". Siehe meine Antwort unten.
- In der Tat. Ich war nur mit Mühe zu verstehen was das problem verursacht
Du musst angemeldet sein, um einen Kommentar abzugeben.
In dem Skript, das Sie verwenden, die Antwort wurde bereits analysiert, um ein PHP-array mit dem Namen $Ergebnis. Hast du schon das array in der gedruckten Ausgabe als gut.
Ihr Problem ist, soweit ich sehen kann, ist die Tatsache, dass print() und echo() nicht gut tun, auf arrays. Sie einfach den Ausgabe-Typ (Array) anstatt den Inhalt.
Können Sie die Ausgabe von $result mit
Lesen Sie mehr auf PHP array-handling in der PHP-Handbuch.
möchten Sie analysieren die $client->Antwort ? versuchen explode ('\n', $client->response) und explode(': ', $each_string)