我的任务是为第三方的 Web 服务开发一个客户端,我无法访问或处理这些服务器机器和源代码。我所拥有的只是 API 规范和地址。该程序在没有身份验证的情况下在 DevelopEnvironment 上运行良好,但在 ProductionEnvironment 它需要基本的 http 身份验证和证书,然后我什至无法收到任何答案。他们说我可以使用自签名证书,所以我在我的服务器(CentOS Apache2+PHP5.3.3)中创建了一个。
该公司向我发送了一段功能性的 DotNetServiceClient 代码,其中包括链接如下的 app.config。
我需要一些示例来说明如何在 PHP SoapClient 或 CURL 中发送此身份验证以及更多证书。
这是 C# 应用程序的 app.config,带有假 IP 和证书: http: //pastebin.com/Jt9k6DB0
这是我当前的客户端代码:
/* PHP WebService Client */
$pemPath = '/my/certificate/directory/selfsignedcertificate/thatwebservice.pem';
$pemBuffer = file_get_contents($pemPath);
$connectionParameters = array(
'login' => 'login',
'password' => 'password',
'trace' => TRUE,
'encoding' => 'UTF-8',
'exceptions' => TRUE,
'cache_wsdl' => WSDL_CACHE_NONE,
'soap_version' => SOAP_1_2,
'local_cert' => $pemBuffer,
'passphrase' => 'd3e343der434wds',
);
$theClient = new SoapClient($serverWSDLURL, $connectionParameters);
$r = $theClient->GetBasicWorkData();
答案:没有答案!只有超时。
我改编了从这两个 StackOverflow 主题中获取的信息: