Запрос клиента SOAP --› Неверный запрос

Меня попросили изучить синхронизацию данных с помощью службы SOAP. Я действительно не очень хорошо знаю SOAP и получаю сообщение об ошибке неверного запроса.

Функция, которую я пытаюсь вызвать, является тестовой эхо-функцией:

публичная строка EchoAuthenticated(текстовая строка)

Каждый раз, когда я вызываю его, я получаю сообщение об ошибке.

Я закомментировал настройку имени пользователя/пароля, так как я не знаю имя пользователя и пароль прямо сейчас, а мое контактное лицо в отпуске :( Хотя сейчас я был бы совершенно счастлив просто получить сообщение об ошибке аутентификации, а не ошибку ...

Если кто-нибудь может указать мне правильное направление здесь, пожалуйста...

Спасибо,

Джон

 <?php

 $apiUrl         = 'https://exdev.api.propctrl.co.za/v3/Integration.svc?wsdl';
 $options        = array( 'trace' => 1, 'exceptions' => 1,  'soap_version' => SOAP_1_2);

 try
 {
    $client     = new SoapClient($apiUrl, $options);

    //$data       = array(
    //  'Username'          => "test",
    //  'Password'          => "test"
    //);

    //$header = new SoapHeader('https://exdev.api.propctrl.co.za/v3/', 'CredentialsHeader', $data, false);
    //$client->__setSoapHeaders($header);

    var_dump($client->__getFunctions());


    print $client->EchoAuthenticated("Test String");
    var_dump($client->__getLastRequest());

 }
 catch(Exception $e)
 {
    echo $e->getMessage();
 }

 ?>

person John Mc Murray    schedule 27.03.2013    source источник


Ответы (1)


Вы можете попробовать что-то вроде:

...
$client     = new SoapClient($apiUrl, $options);

var_dump($client->__getFunctions());

$auth = array("Username" => "John", "Password" => "secret", 
    "IsP24Credentials" => false);
$header = new SoapHeader("https://www.propctrl.com/", "CredentialsHeader", 
    $auth, FALSE);
$client->__setSoapHeaders($header);

print $client->EchoAuthenticated(array( 
    "text" => "My text to be echoed."
));
var_dump($client->__getLastRequest());
...

Это должно привести к запросу запроса SOAP следующим образом:

<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="https://www.propctrl.com/v3" xmlns:ns2="https://www.propctrl.com/">
   <env:Header>
      <ns2:CredentialsHeader>
         <ns2:IsP24Credentials>false</ns2:IsP24Credentials>
         <ns2:Password>secret</ns2:Password>
         <ns2:Username>John</ns2:Username>
      </ns2:CredentialsHeader>
   </env:Header>
   <env:Body>
      <ns1:EchoAuthenticated>
         <ns1:text>My text to be echoed.</ns1:text>
      </ns1:EchoAuthenticated>
   </env:Body>
</env:Envelope>

В качестве примечания вы можете взглянуть на http://www.soapui.org/. Этот инструмент очень помогает в разработке веб-сервисов.

person Marcellus    schedule 27.03.2013
comment
Привет, Марцелл, спасибо за ответ. У меня это не сработало, однако я собираюсь загрузить soapui и посмотреть, что отправляется... - person John Mc Murray; 28.03.2013