0

我可以加载 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"; 
  }
?>

所以我的问题是,我需要做什么才能让安全证书通过?

谢谢,

皮特

4

2 回答 2

1

$header 中 local_cert 的目的不是在 SOAP 调用本身中发送它。它仅用作 SSL 客户端证书。此外,根据php.net 上的此评论,您需要阅读证书的文件内容才能使用它。

于 2011-07-30T12:10:57.057 回答
0

2(小)东西:

  • 'logonUser' 似乎不是SoapClient 构造函数的有效选项。如果它是此服务的必需标头,请考虑使用soapClient::setSoapHeaders。如果它是标准的 HTTP 登录参数,请使用“登录”键。

  • 尝试使用 pem 证书的完整路径,并确保它可以被 php 读取

于 2011-07-30T12:10:43.783 回答