Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Вопрос по использованию cURL в PHP / 2 сообщений из 2, страница 1 из 1
16.06.2014, 12:09
    #38670196
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по использованию cURL в PHP
Есть устройство с веб-интерфейсом, с которым работает мой скрипт. Устройство получает запрос в JSON и возвращает ответы в JSON.
Для этого у меня используется примерно такой код:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Cookie: $session"));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(['json'=>json_encode($data)]));
$res = curl_exec($ch);
if ($res === false)
{
	return "Ошибка запроса: " . curl_error($this->curl);
}
else
{
	$res = json_decode($res,true);
	if ($res['meta']['rc'] == 'ok')
	{
		return empty($res['data']) ? array() : $res['data'];
	}
	elseif ($res['meta']['rc'] == 'error')
	{
		return "Ошибка: " . $res['meta']['msg'];
	}
	else
	{
		return "Ошибка: " . $res;
	}
}



Но иногда сервер возвращает ошибку текстом, т.е. не кодом 500 (поэтому curl_exec не возвращает false), а кодом 200, но в ответе сервера не JSON, а HTML-код с текстом ошибки. При этом $res = json_decode($res,true) возвращает пустую строку, поэтому причина ошибки и не видна.
Не посоветуете, как такую ситуацию обработать?
Поведением сервера я управлять не смогу. Видимо мне надо как-то определить, является ли полученная строка JSON-кодированной и если нет, то извлечь из HTML-кода текст ошибки, который указан в BODY и обрамлен в PRE.
________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
16.06.2014, 12:53
    #38670271
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по использованию cURL в PHP
Ну можно перед тем как в JSON преобразовать сначала поискать HTML теги с ошибкой.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Вопрос по использованию cURL в PHP / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]