Nasıl bir php değişken / diziye NuSOAP bu yanıtı ayrıştırmak

2 Cevap php

Yani ancak ben print_r kullanarak gösterecektir, ancak baskı kullanırken sadece Dizisi görüntüler bir yanıt almak için bilgi ChemSpider sunucu yoklamak almak NuSOAP çatlamak başardı sahip.

Benim soru gerçekten bu nedir, nasıl verilir yanıtı alır ve bir php diziye dönüş yok

NuSOAP istemci için kod

<?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>';
?>

Bu aşağıdaki çıktıyı (eksi hata ayıklama bilgisi) verir:

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>

2 Cevap

Kullandığınız komut olarak, yanıtı zaten $result adında bir PHP dizi çözümlenir. Zaten de çıktı basılmış bir dizi var.

Senin sorun, bildiğim kadarıyla gördüğünüz gibi, print () ve echo () diziler üzerinde iyi çalışmıyor olmasıdır. Onlar sadece çıkış yerine içeriğinin tipi (Array).

Sen $ ile sonuç çıktı arayabilirsiniz

print $result['simpleSearchResult']['int'] // Will display 864

Sen PHP Manual işleme PHP'nin dizi daha okuyabilirsiniz.

Eğer $ client-> yanıtı ayrıştırmak istiyor? ('\ n', $ client-> yanıt) patlayabilir ve patlamaya deneyin (':', $ each_string)