我正在编写一个执行 SOAP 请求的 PHP 应用程序。有时他们的服务器没有启动或出现某种问题,我的应用程序出现如下错误:
Undefined property: stdClass::$getSomethingJSONResult
SOAP 请求失败的原因可能有很多,我希望能够检查这些错误情况,以便程序可以处理它。
我有两个在 PHP 中使用的 SOAP 函数。一个用于登录 SOAP 服务器,另一个用于查询以获取 soapFunction。它们看起来像这样:
// --------------------- FUNCTIONS -----------------------
function login_soap($username,$password) {
global $soapClient;
$soapURL = "http://SOAPServerSomeplace.asmx?WSDL";
$ns = 'http://microsoft.com/webservices/'; //Namespace of the WS.
$soapParameters = array('userName' => $username, 'password' => $password);
$soapClient = new SoapClient($soapURL);
$header = new SoapHeader($ns,'UserCredentials',$soapParameters,false);
$soapClient->__setSoapHeaders($header);
}
// -------------------------------------------------------
function getSomething($option) {
global $soapClient;
$soapFunctionParameters = array('this' => $option) ;
$soapFunction = "getSomethingJSON" ;
$this_json = $soapClient->$soapFunction($soapFunctionParameters);
$stdClassObject = json_decode($this_json->getSomethingJSONResult);
$this_obj = $stdClassObject->this;
return $this_obj;
}
// -------------------------------------------------------
我想知道我是否可以这样做:
if (login_soap($username,$password)) {
echo "This worked." . "\n";
} else {
echo "This failed." . "\n";
}
还是使用 getSomething($option)?
我不知道如何模拟 SOAP 请求失败来测试这一点,但我认为 SOAP 请求失败会导致 PHP 中止。我需要捕获它,这样它就不会中止 PHP,所以我可以指导它做其他事情。
我首先关心的是确保 SOAP 请求有效。然后检查它返回的 JSON 文件,以确保它具有程序继续之前所需的所有数据。检查我发现的 JSON 文件,但不是 SOAP 请求。谢谢!