2013-07-03 29 views
5

Die Variable $ response im folgenden Code ist NULL, obwohl sie der Wert der SOAP-Anforderung sein sollte. (eine Liste der Gezeiten). Wenn ich $ client -> __ getLastResponse() aufrufe bekomme ich die korrekte Ausgabe vom SOAP Service.SoapClient gibt "NULL" zurück, aber __getLastResponse() gibt XML zurück

Weiß jemand, was hier falsch ist? Vielen Dank! :)

Hier ist mein Code:

$options = array(
    "trace" => true, 
    "encoding" => "utf-8" 
); 
$client = new SoapClient("http://opendap.co-ops.nos.noaa.gov/axis/webservices/highlowtidepred/wsdl/HighLowTidePred.wsdl", $options); 

$params = array(
    "stationId" => 8454000, 
    "beginDate" => "20060921 00:00", 
    "endDate" => "20060922 23:59", 
    "datum" => "MLLW", 
    "unit" => 0, 
    "timeZone" => 0 
); 

try { 
$result = $client->getHLPredAndMetadata($params); 
echo $client->__getLastResponse(); 
} 
catch (Exception $e) { 
    $error_xml = $client->__getLastRequest(); 
    echo $error_xml; 
    echo "\n\n".$e->getMessage(); 
} 
var_dump($result); 
+0

Wo $ Antwort ist? – Matheno

+2

nach dem Wsdl, die soa p Antwort ist falsch (vom Server), daher kann der Client sie nicht analysieren. Ich habe Ihren Code getestet, und das Antwort-XML enthält das HighLowValues-Tag, aber es bezieht sich auf die Funktion "getHighLowTidePredictionsResponse". – Fracsi

+0

@Frasci: Ihre Lösung hat funktioniert. Vielen Dank! :) – Padraig

Antwort

4

Der Grund, dass die $result (oder die Antwort auf die Soapcall) ist in der Tat null ist, weil die WSDL ungültig ist

ich nur in das gleiche Problem lief - die WSDL, sagte der. Antwort sollte PackageChangeBatchResponse noch die eigentlichen XML kehrt sein muss PackageChangeResponse

die WSDL Ändern der Antwort anzupassen/Änderung der Antwort der WSDL anzupassen behebt das Problem

0

Sie sollten wie unten eine Option Parameter geben:

<?php 
// below $option=array('trace',1); 
// correct one is below 
$option=array('trace'=>1); 

$client=new SoapClient('some.wsdl',$option); 

try{ 
    $client->aMethodAtRemote(); 
}catch(SoapFault $fault){ 
    // <xmp> tag displays xml output in html 
    echo 'Request : <br/><xmp>', 
    $client->__getLastRequest(), 
    '</xmp><br/><br/> Error Message : <br/>', 
    $fault->getMessage(); 
} 
?> 

"Spur" Parameter, um den Ausgang der Anfrage ermöglicht. Jetzt sollten Sie die SOAP-Anfrage sehen. (Quelle: PHP.net