ПланФикс API: Содержание подключаемого файла lib php: различия между версиями
Материал из Planfix
								
												
				SliZzzZ (обсуждение | вклад) Нет описания правки  | 
				Seva (обсуждение | вклад)  Нет описания правки  | 
				||
| (не показаны 2 промежуточные версии 2 участников) | |||
| Строка 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);  | ||
| Строка 104: | Строка 76: | ||
== Перейти ==  | == Перейти ==  | ||
*[[ПланФикс API: Примеры вызова API на php]]  | *[[ПланФикс API:Примеры вызова API на php]]  | ||
Текущая версия от 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();
	}
}
?>