我正在尝试使用 PHP 向服务器发出 SOAP 请求,但我在运行时得到的只是"无法连接到主机">
$this->client->__soapCall("aMethod()", [$request_param_array]));
我认为 WSDL 很好,因为我可以在浏览器中和运行时访问它
$this->client->__getFunctions();
我确实收到可用函数的列表(如本 wsdl 中指定(。
我确实需要一个证书来对该服务器进行 SOAP 调用,所以也许这就是问题所在?但是我不知道如何调试导致此"无法连接到主机"错误的原因。
任何想法会导致此错误发生或我如何找到问题?
到目前为止我的代码:
public function __construct($url, $wsdl = null)
{
$this->wsdl = $wsdl != null ? $wsdl : $url . '?wsdl';
$this->client = new SoapClient($this->wsdl, array(
"trace" => "1",
"local_cert" => realpath(__DIR__ . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . "..") . "cert.pfx",
"passphrase" => "admin",
));
Log::info(sprintf("New SoapClient created with WSDL: '%s'", $this->wsdl));
}
我后来使用 SoapUI 围绕这些与 SOAP 相关的问题进行了更多调试。SoapUI给了我一个"SSL握手"异常。事实证明,这是一个无效的私钥证书,与我连接到的 SOAP 服务器上的公钥证书不匹配。
虽然,我仍然不知道如何在 PHP 中调试这样的问题。有什么想法吗?让我知道。