Я застрял с этим уже несколько дней и, похоже, нигде не могу найти ответ, хотя думаю, что это довольно распространенная задача. Кто-нибудь может помочь?
Я пытаюсь использовать PHP и NuSOAP для подключения к веб-сервису. Веб-сервис требует, чтобы я использовал как ssl-сертификат, так и передавал параметры аутентификации в запросе мыла. По предположению администраторов веб-службы запрос должен выглядеть следующим образом:
<?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. Прямо сейчас, это то, что у меня есть (я не знаю, как передать параметры аутентификации или использовать имеющиеся у меня файлы сертификатов):
<code>$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) . '
';
echo '
Response
';
echo '
' . htmlspecialchars($client->response, ENT_QUOTES) . '
';
echo '
Debug
';
echo '
' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '
';
Используя приведенный выше код отладки, я вижу, что это ответ, который я получаю от веб-службы:
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? Как вы, вероятно, можете сказать, я довольно плохо знаком с веб-сервисами и NuSOAP. Если что-то в моем вопросе не имеет смысла, пожалуйста, дайте мне знать.