PHP soap客户端调用停止脚本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP soap客户端调用停止脚本相关的知识,希望对你有一定的参考价值。
以下问题让我发疯:
我使用WSDL和p12证书连接到SOAP WS。如果方法不正确或者缺少参数,我可以调用某些东西并获得异常:
"Function ("Test1") is not a valid method for this service"
"SOAP-ERROR: Encoding: object has no 'message' property"
但如果一切(我认为)都是正确的,脚本就会停止
try{
$client = new SoapClient(
$soapUrl,
array(
'ssl' => array(
'cert' => $cert_file,
'certpasswd' => $cert_password),
'trace' => 1,
'exceptions' => 0
)
)
);
$uuid = gen_uuid();
$SendValue = array('transaction' => Array('uuid'=>$uuid),
'message' => '-test message-',
'delay' => 0,
throwException => 1,
forceRollback => 0);
echo "<br>";
// var_dump($SendValue);
echo "Test Start - "; // this is printed
$result = $client -> Test($SendValue);
echo " - Test Ende"; // this is not printed anymore and all the below
echo "<br>OK - Request:
" . $client->__getLastRequest(). "!
";
echo "<pre>";
print_r($result);
echo "</pre>";
//-----------------------------------------------------------
echo "<h1>EOF</h1>";
}catch(Exception $exception)
{
echo "Did not work...";
var_dump($exception);
echo "Request:
" . $client->__getLastRequest() . "
";
echo "Response:
" . $client->__getLastResponse() . "
";
}
echo "this is not printed";
有什么建议吗?非常感谢提前。
答案
看起来您将trace
选项放在配置数组中的错误位置。而不是
array(
'ssl' => array(
'cert' => $cert_file,
'certpasswd' => $cert_password,
'trace' => 1,
'exceptions' => 0
)
)
它应该是
array(
'ssl' => array(
'cert' => $cert_file,
'certpasswd' => $cert_password,
)
'trace' => 1,
'exceptions' => 0
)
一个有效的未设置trace
选项(当它在错误的地方,使用回退默认值0
)导致__getLastRequest()
不可用,所以你可能会“调用未定义的方法错误”。
您没有看到这个的最可能的原因是您的运行时php配置阻止您看到错误消息。请参阅PHP's white screen of death以了解如何查看错误。
它也可能是SoapClient
抛出不同类型的异常而不是SoapFault
。将该类型更改为Exception
,看看你是否得到任何东西。
以上是关于PHP soap客户端调用停止脚本的主要内容,如果未能解决你的问题,请参考以下文章