PHP: вызов API REST - PullRequest
       5

PHP: вызов API REST

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

Я пытаюсь вызвать API vChargeBack для получения информации о сервере vCenter. У меня проблемы с этим.

Я должен передать запрос в виде XML-данных в теле запроса. А также я должен передать версию в качестве параметра URL. Код, который я написал,

$xmlfile=simplexml_load_file('login.xml');
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);  
curl_setopt($ch, CURLOPT_POSTFIELDS,$xmlfile);//Passing XML file as POST field
curl_setopt($ch, CURLOPT_TIMEOUT, 10);  
curl_setopt($ch, CURLOPT_URL,"https://xx.xx.xx.xx/vCenter-CB/api/login");//Setting URL  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
curl_setopt($ch , CURLOPT_SSL_VERIFYPEER , false );//Since I am requesting https
curl_setopt($ch , CURLOPT_SSL_VERIFYHOST , false );//Since I am requesting https
curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Accept: ' . $this->acceptType ));
$response=curl_exec($ch);//Getting response
$responseInfo=curl_getinfo($ch);//Getting response headers

Когда я выполняю, я получаю ответ 400 Bad Request. Я заметил, что не отправляю версию в качестве параметра URL. Так должно быть Название: версия значение: 1.5.0 Я не знаю, как отправить эту версию в качестве параметра URL. Если я отправлю это как POSTFIELD, то как мне отправить файл XML в качестве тела запроса?

Пожалуйста, помогите мне ...

С уважением, Srinath

1 Ответ

1 голос
/ 07 октября 2011

Интерфейс Chargeback не RESTful.Это портал XML с ресурсами в заданных конечных точках, определенных документацией.Чтобы войти в систему, заполните API_NAMESPACE в качестве пространства имен XML, предоставленного для вашей установки, API_VERSION в качестве номера версии API, TYPE (который может быть "локальным" или "ldap").NAME и PASSWORD должны быть очевидными.

<Request xmlns="$API_NAMESPACE/$API_VERSION">
    <Users>
        <User>
            <Type>$TYPE</Type>
            <Name>$NAME</Name>
            <Password>$PASSWORD</Password>
        </User>
    </Users>
</Request>

Создайте запрос POST для https://hostname/vCenter-CB/api/login?version=$API_VERSION с необработанными данными POST, установленными в XML выше.Не забудьте сохранить куки-файл сеанса, который вы отправляете после возврата этого запроса, поскольку он представляет ваш сеанс на сервере.

Кроме того, если вы используете логины LDAP, вам может потребоваться включить дочерний элемент LdapUsers ниже Users (как элемент User) для предоставления учетных данных LDAP.Это описано в Руководстве по программированию API от VMware.

...