ПланФикс API: Содержание подключаемого файла lib php — различия между версиями
Материал из ПланФикс
SliZzzZ (обсуждение | вклад) |
Seva (обсуждение | вклад) |
||
(не показана 1 промежуточная версия 1 участника) | |||
Строка 1: | Строка 1: | ||
+ | {{#seo: | ||
+ | |title=ПланФикс API: Содержание подключаемого файла lib php | ||
+ | |titlemode=append | ||
+ | |keywords=планфикс, апи, api | ||
+ | |description=ПланФикс API: Содержание подключаемого файла lib php | ||
+ | }} | ||
+ | |||
<source lang="php"> | <source lang="php"> | ||
<?php | <?php | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
/** | /** | ||
Строка 45: | Строка 17: | ||
* сам результат будет передан в response как объект класса SimpleXMLElement | * сам результат будет передан в response как объект класса SimpleXMLElement | ||
*/ | */ | ||
− | function apiRequest($api_server, $api_key, $requestXml) { | + | function apiRequest($api_server, $api_key, $api_token, $requestXml) { |
$result = array('success' => true, 'response' => null); | $result = array('success' => true, 'response' => null); | ||
$ch = curl_init($api_server); | $ch = curl_init($api_server); | ||
Строка 58: | Строка 30: | ||
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); | curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); | ||
− | curl_setopt($ch, CURLOPT_USERPWD, $api_key . ': | + | curl_setopt($ch, CURLOPT_USERPWD, $api_key . ':'.$api_token); |
curl_setopt($ch, CURLOPT_POST, true); | curl_setopt($ch, CURLOPT_POST, true); |
Текущая версия на 14:07, 15 июля 2019
<?php
/**
* Выполняет отправку запроса на сервер
* @param string $api_server
* @param string $api_key
* @param SimpleXMLElement $requestXml
* @return array success - говорит об успешности выполнения http-запроса,
* сам результат будет передан в response как объект класса SimpleXMLElement
*/
function apiRequest($api_server, $api_key, $api_token, $requestXml) {
$result = array('success' => true, 'response' => null);
$ch = curl_init($api_server);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // не выводи ответ на stdout
curl_setopt($ch, CURLOPT_HEADER, 1); // получаем заголовки
curl_setopt($ch, CURLOPT_TIMEOUT, 5); // устанавливам максимальное время ожидания
// не проверять SSL сертификат
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
// не проверять Host SSL сертификата
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $api_key . ':'.$api_token);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $requestXml->asXML());
$response = curl_exec($ch);
$error = curl_error($ch);
if ($error != "") {
$result['success'] = false;
$result['response'] = $error;
return $result;
}
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$responseBody = substr($response, $header_size);
try {
$result['response'] = new SimpleXMLElement($responseBody);
} catch (Exception $e) {
// пришел поломанный XML
$result['success'] = false;
$result['response'] = 'broken xml';
}
return $result;
}
/**
* проверяем, является ли ответ-ошибка
* @param SimpleXMLElement $responseXml
*/
function parseAPIError($responseXml) {
if ($responseXml['status'] == 'error') {
// рассшифровку кода ошибки можно посмотреть http://goo.gl/GWa1c
echo 'code :' . $responseXml->code;
echo ' message: ' . $responseXml->message;
exit();
}
}
?>