php SOAP не отправляет сертификат. - PullRequest
0 голосов
/ 30 июля 2011

Я могу загрузить в wsdl, просто вытащить функции и типы данных, но когда я пытаюсь вызвать функцию на сервере, я получаю ошибку соединения.Когда я смотрю на данные мыла, переданные в запросе $, они не содержат сертификат безопасности и не генерируют никаких ошибок.

Мой код выглядит так:

  // 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"; 
  }
?>

Так что мой вопросэто, что мне нужно сделать, чтобы получить сертификат безопасности для передачи?

Спасибо,

Пит

Ответы [ 2 ]

1 голос
/ 30 июля 2011

Цель local_cert в $ header - не отправлять его в самом вызове SOAP. Он используется только в качестве SSL-сертификата клиента. Кроме того, согласно этому комментарию на php.net вам необходимо прочитать содержимое файла сертификата, чтобы использовать его.

0 голосов
/ 30 июля 2011

2 (маленькие) вещи:

  • 'logonUser' не является допустимой опцией для конструктора SoapClient . Если это обязательный заголовок для этой службы, рассмотрите возможность использования soapClient :: setSoapHeaders . Если это стандартный HTTP-параметр входа в систему, используйте ключ «login».

  • попробуйте использовать полный путь сертификата pem и убедитесь, что он доступен для чтения по php

...