Подключение к веб-сервису с использованием PHP дает только имя пользователя, пароль и центр сертификации - PullRequest
7 голосов
/ 26 июля 2011

Я успешно подключаюсь, используя Microsoft C #, к веб-службе Microsoft.Я должен предоставить имя пользователя, пароль (в коде C #);и установите сертификат (в формате .cer) в раздел «Root Certificate Authorities» системных сертификатов.

Как я могу подключиться к такому веб-сервису на PHP?Причина, по которой я спрашиваю, состоит в том, что все методы, которые я видел (например, wsdl2php, который создает подкласс SoapClient), по-видимому, предполагают различные вещи, такие как сертификат SSL, файл ключей SSL и пароль-пароль SSL.все меня смущает.Я не уверен, что должно идти куда.Я не уверен, куда должен идти мой "центр сертификации" (файл .cer) и куда должны идти имя пользователя и пароль.Есть идеи?

Ответы [ 2 ]

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

все можно сделать с мыльным клиентом и stream_context_create с использованием ssl options

<?php
$context = stream_context_create(array(
  'https' => array(
     'cafile' => '/path to file',
     'verify_peer' => true
  )));

new soapclient("https://localhost/index.php?wsdl",array(
  'login'=>'admin',
  'password'=>'passss',
  'stream_context'=> $context
));

В мыле нередко не используется http auth, а просто мыльный вызов, важна документация

может быть полезным использовать классы soapclient с классами, использующими classmap для сопоставления типов мыла с php-предложениями

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

Обычно, если вы звоните в веб-сервис с использованием обычного SSL, ваш URL будет выглядеть так:

https://username:password@myserver.com/mywebservice.php

Тогда возникает проблема с сертификатом SSL. Я использую что-то подобное, чтобы читать с защищенного SSL веб-интерфейса SVN. Я не знаю другого решения, кроме как войти на сервер как пользователь, который запускает ваш веб-сервер (apache / IIS) и принимает сертификат вручную. В случае SVN вы можете оформить заказ, и он попросит вас принять сертификат. Я не совсем уверен, как это будет работать для простого запроса HTTPS, но, возможно, вы можете получить сертификат, загрузив веб-сервис в браузере? (или используя wget или что-то необычное, если вам повезло, что вы работаете в Linux)

Кроме того, является ли ваш код кодом PHP или кодом C #? Если это C #, вам может потребоваться сделать что-то еще полностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...