php SOAP未发送certificate.pem

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",

我可以加载wsdl,拉出函数和数据类型,但当我尝试在服务器上调用函数时,我会出现连接错误。当我查看$request中传递的soap数据时,它不包含任何安全证书,并且不会生成任何错误

我的代码如下所示:
  // 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,因此需要另一个工具。