2009-09-24 4 views
0

그래서 chemspider 서버를 폴링하기 위해 nusoap을 얻는 데 문제가 있었지만 print_r을 사용하여 표시 할 응답을 얻었지만 인쇄를 사용하면 단순히 Array 만 표시합니다.nusoap에서 PHP 변수/배열로이 응답을 구문 분석 할 수 있습니까?

내 질문 (마이너스 디버그를이 정말, 내가 주어진 응답을 할 방법과 PHP 배열

nusoap 클라이언트

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

이 다음과 같은 출력을 제공하는 코드로 돌려입니다 정보) :

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> 
+0

질문이 잘못되었습니다. 이미 완벽하게 사용할 수있는 배열, 즉 $ result가 있습니다. 귀하의 질문은 "왜 내가 $ result;를 echo 할 때 'Array'를 출력합니까?". 아래 주어진 답변을 참조하십시오. – Duroth

+0

사실. 문제의 원인을 이해하는 데 문제가 있습니다. –

답변

0

사용하는 스크립트에서 응답은 $ 결과이라는 PHP 배열로 이미 구문 분석되었습니다. 이미 출력물에 배열이 인쇄되어 있습니다.

내가 알기 론 print() 및 echo()가 배열에서 제대로 작동하지 않는다는 문제가 있습니다. 그들은 단순히 내용 대신에 유형 (배열)을 출력합니다.

당신은 $의 출력이

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

당신은 PHP Manual에서 처리하는 PHP의 배열에 대한 자세한 내용을보실 수 있습니다와 함께 결과를 호출 할 수 있습니다.

0

$ client-> response를 구문 분석 하시겠습니까?

+0

제안을 주셔서 감사합니다. 아래의 제안이 문제를 해결 한 것으로 나타났습니다. 많은 노력을 주셔서 감사합니다. –

관련 문제