Php SoapClient返回“;空";,但是,getLastResponse()返回XML

Php SoapClient返回“;空";,但是,getLastResponse()返回XML,php,web-services,soap,Php,Web Services,Soap,下面代码中的变量$response为NULL,即使它应该是SOAP请求的值。(潮汐列表)。当我调用$client->\uuu getLastResponse()时,我从SOAP服务获得正确的输出 有人知道这里出了什么问题吗?谢谢!:) 这是我的密码: $options = array( "trace" => true, "encoding" => "utf-8" ); $client = new SoapClient("http://opendap.co-ops.nos.no

下面代码中的变量$response为NULL,即使它应该是SOAP请求的值。(潮汐列表)。当我调用$client->\uuu getLastResponse()时,我从SOAP服务获得正确的输出

有人知道这里出了什么问题吗?谢谢!:)

这是我的密码:

$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);

您应该提供一个选项参数,如下所示:

<?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(); 
} 
?> 
\uu getLastRequest(),
“

错误消息:
”, $fault->getMessage(); } ?>
“trace”参数启用请求的输出。现在,您应该看到SOAP请求。
(来源:PHP.net

之所以
$result
(或对SoapCall的响应)为
null
,确实是因为WSDL无效

我刚刚遇到了同样的问题-WSDL说响应应该是
PackageChangeBatchResponse
,但实际返回的XML有
PackageChangeResponse


更改WSDL以匹配响应/更改响应以匹配WSDL解决了问题

根据WSDL,soap响应不正确(由服务器执行),因此客户端无法解析它。我已经测试了您的代码,响应XML包含HighLowValues标记,但它与
getHighLowTidePredictionsResponse
函数相关。@Frasci:您的解决方案成功了。谢谢!:)