【发布时间】:2011-08-17 00:23:36
【问题描述】:
我已经被这个问题困扰了好几天了,我似乎无法在任何地方找到答案,尽管我认为这是一项相当普遍的任务。有人可以帮忙吗?
我正在尝试使用 PHP 和 NuSOAP 连接到 Web 服务。 Web 服务要求我同时使用 ssl 证书,并在soap 请求中传递身份验证参数。根据 Web 服务的管理员,请求应该如下所示:
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<o:Security xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<o:UsernameToken>
<o:Username>username</o:Username>
<o:Password>password</o:Password>
</o:UsernameToken>
</o:Security>
</s:Header>
<s:Body>
<PriceQuote xmlns="a_url">
<PartnerProfileId>a_unique_partner_id_we_have</PartnerProfileId>
<Reservation xmlns:d4p1="another_url" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
* a bunch of stuff
</Reservation>
</PriceQuote>
</s:Body>
</s:Envelope>
我一直试图弄清楚如何使用 NuSOAP 来做到这一点。现在,这就是我所拥有的(我不知道如何传递身份验证参数,或者使用我拥有的证书文件):
$client = new nusoap_client("https://endpoint_url");
$client->soap_defencoding = 'UTF-8';
$result = $client->call("PriceQuote", "");
// For debugging
echo '<h2>Request</h2>';
echo '<pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>';
echo '<h2>Response</h2>';
echo '<pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>';
echo '<h2>Debug</h2>';
echo '<pre>' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '</pre>';
通过使用上面的调试代码,我可以看到这是我从 Web 服务得到的响应:
HTTP/1.1 500 Internal Server Error
Date: Mon, 02 May 2011 13:42:14 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Cache-Control: private
Content-Type: text/xml; charset=utf-8
Content-Length: 347
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<s:Fault>
<faultcode xmlns:a="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
a:InvalidSecurity
</faultcode>
<faultstring xml:lang="sv-SE">
An error occurred when verifying security for the message.
</faultstring>
</s:Fault>
</s:Body>
</s:Envelope>
这个响应当然不足为奇,因为我没有在请求中传递任何身份验证参数。
有谁知道我如何在 SOAP 请求的标头中传递用户名和密码,以及如何使用我拥有的 ssl 证书文件?您可能会说,我对 Web 服务和 NuSOAP 还很陌生。如果我的问题中的某些内容没有意义,请告诉我。
【问题讨论】:
标签: php web-services soap https nusoap