php SOAP未发送certificate.pem
我可以加载wsdl,拉出函数和数据类型,但当我尝试在服务器上调用函数时,我会出现连接错误。当我查看$request中传递的soap数据时,它不包含任何安全证书,并且不会生成任何错误 我的代码如下所示:php SOAP未发送certificate.pem,php,security,soap,pem,Php,Security,Soap,Pem,我可以加载wsdl,拉出函数和数据类型,但当我尝试在服务器上调用函数时,我会出现连接错误。当我查看$request中传递的soap数据时,它不包含任何安全证书,并且不会生成任何错误 我的代码如下所示: // setup the transaction array $header = array('local_cert' => "certificate.pem", 'logonUser' => "user_name",
// setup the transaction array
$header = array('local_cert' => "certificate.pem",
'logonUser' => "user_name",
'style' => SOAP_DOCUMENT,
'use' => SOAP_LITERAL,
'exceptions' => true,
'trace' => true);
// create the soap client, this will log us in
$client = new SoapClient($wsdl, $header);
try
{
$response = $client->getMessage($parameters);
}
catch (Exception $e)
{
dumpVars($client->__getLastRequest());
echo 'Caught exception: ', $e->getMessage(), "\n";
}
?>
所以我的问题是,我必须做什么才能通过安全证书
谢谢
皮特2件小事:
- “logonUser”似乎不是适用于的有效选项。如果它是该服务的必需标头,请考虑使用。如果是标准HTTP登录参数,请使用“登录”键
- 尝试使用pem证书的完整路径,并确保php可读
- 在$header中使用本地证书的目的不是在SOAP调用本身中发送它。它仅用作SSL客户端证书。此外,根据需要,您需要读取证书的文件内容才能使用它。这是发送到服务器的xml:[code]API_TYPE1 getMessageByDate[/code]是的,底线是php在其soap客户端中不支持ws-security,所以我可能会找到另一个工具来完成这项工作。我想我了解到的是,在数组中传递的任何内容都只会在构造函数中使用,其他任何内容,如你所说,都必须在SoapHeader中完成。第二部分是php不支持wsse,因此需要另一个工具。