Код:
$ Brpc = новый jsonRPCClient ( 'HTTP: // пользователь: pass@127.0.0.1: 8332 /');
Используется для работыКод:
$ Brpc = новый jsonRPCClient ( 'http://127.0.0.1:8332/');
Не работаеткотировка
Еореп (http://127.0.0.1:8332/): Не удалось открыть поток: запрос HTTP не удалось! HTTP / 1.0 401 Несанкционированное
Является ли это проблемой синтаксиса или проблема с библиотекой?
Код:
PHP
/ *
АВТОРСКИЕ ПРАВА
Copyright 2007 Sergio Vaccaro
Этот файл является частью JSON-RPC PHP.
JSON-RPC PHP является свободным программным обеспечением; вы можете распространять и / или изменять
это в соответствии с условиями GNU General Public License, опубликованной
Фонд свободного программного обеспечения; либо версии 2 Лицензии, или
(По вашему выбору) любой более поздней версии.
JSON-RPC PHP распространяется в надежде, что это будет полезно,
но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий
Или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. См
GNU General Public License для более подробной информации.
Вы должны были получить копию GNU General Public License
наряду с JSON-RPC PHP; если нет, то пишите на свободное программное обеспечение
Foundation, Inc., 51 Franklin St, Пятый этаж, Boston, MA 02110-1301 USA
* /
/ **
* Объект этого класса являются общими клиентами jsonRPC 1.0
* http://json-rpc.org/wiki/specification
*
* @author Серджио
* /
класс jsonRPCClient {
/ **
* Debug состояние
*
* @var булево
* /
частный $ отлаживать;
/ **
* URL-адрес сервера
*
* @var строка
* /
частный $ URL;
/ **
* Запрос идентификатор
*
* @var целое
* /
частный $ ID;
/ **
* Если это правда, уведомления выполняются вместо запросов
*
* @var булево
* /
частный $ уведомление знак равно ложный;
/ **
* Принимает параметры соединения
*
* @param строка $ URL
* @param булева $ отлаживать
* /
публичная функция __construct($ URL,$ отлаживать знак равно ложный) {
// URL сервера
$ this-->URL знак равно $ URL;
// прокси
пусто ($ прокси)? $ this-->полномочие знак равно «» : $ this-->полномочие знак равно $ прокси;
// состояние отладки
пусто ($ отлаживать)? $ this-->отлаживать знак равно ложный : $ this-->отлаживать знак равно правда;
// Идентификатор сообщения
$ this-->Я бы знак равно 1;
}
/ **
* Устанавливает состояние уведомления объекта. В этом состоянии, уведомления выполняются, вместо запросов.
*
* @param булева $ уведомление
* /
публичная функция setRPCNotification($ уведомление) {
пусто ($ уведомление)?
$ this-->уведомление знак равно ложный
:
$ this-->уведомление знак равно правда;
}
/ **
* Выполняет запрос jsonRCP и получает результаты в виде массива
*
* @param строка $ метод
* @param массив $ PARAMS
* @return массив
* /
публичная функция __вызов($ метод,$ Params) {
// проверить
если (!is_scalar($ метод)) {
бросить новый исключение(«Имя метода не имеет значения скалярного»);
}
// проверить
если (is_array($ Params)) {
нет // нет ключей
$ Params знак равно array_values($ Params);
} Еще {
бросить новый исключение(«Params должны быть предоставлены в виде массива»);
}
// устанавливает уведомление или запрос задачи
если ($ this-->уведомление) {
$ currentId знак равно НОЛЬ;
} Еще {
$ currentId знак равно $ this-->Я бы;
}
// готовит запрос
$ запрос = Массив (
«Метод» знак равно> $ метод,
«Титулы» знак равно> $ Params,
'Я бы' знак равно> $ currentId
);
$ запрос знак равно json_encode($ запрос);
$ this-->отлаживать && $ this-->отлаживать.знак равно'***** Запрос *****'.«\ П».$ запрос.«\ П»."***** Конец запроса *****.«\ П \ п»;
// выполняет POST HTTP
$ КЛЮЧ = Массив ('HTTP' знак равно> массив (
«Метод» знак равно> 'ПОСЛЕ',
«Заголовок» знак равно> 'Content-тип: / JSON',
«Содержание» знак равно> $ запрос
));
$ контекст знак равно stream_context_create($ КЛЮЧ);
если ($ Ф.П. знак равно Еореп($ this-->URL, 'р', ложный, $ контекст)) {
$ ответ знак равно «»;
в то время как($ строка знак равно fgets($ Ф.П.)) {
$ ответ.знак равно отделка($ строка).«\ П»;
}
$ this-->отлаживать && $ this-->отлаживать.знак равно'***** ответ сервера *****.«\ П».$ ответ."***** Конец ответа сервера *****.«\ П»;
$ ответ знак равно json_decode($ ответ,правда);
} Еще {
бросить новый исключение(«Не удалось подключиться к».$ this-->URL);
}
// отладочный вывод
если ($ this-->отлаживать) {
эхо nl2br($ отлаживать);
}
// окончательные проверки и возврат
если (!$ this-->уведомление) {
// проверить
если ($ ответ['Я бы'знак равно $ currentId) {
бросить новый исключение('Неверный ответ идентификатор (ID запроса:'.$ currentId.«Идентификатор ответа:».$ ответ['Я бы'].')');
}
если (!нулевой($ ответ['ошибка'])) {
бросить новый исключение(«Ошибка запроса:».$ ответ['ошибка']);
}
вернуть $ ответ[«Результат»];
} Еще {
вернуть правда;
}
}
}
?>
/ *
АВТОРСКИЕ ПРАВА
Copyright 2007 Sergio Vaccaro
Этот файл является частью JSON-RPC PHP.
JSON-RPC PHP является свободным программным обеспечением; вы можете распространять и / или изменять
это в соответствии с условиями GNU General Public License, опубликованной
Фонд свободного программного обеспечения; либо версии 2 Лицензии, или
(По вашему выбору) любой более поздней версии.
JSON-RPC PHP распространяется в надежде, что это будет полезно,
но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий
Или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. См
GNU General Public License для более подробной информации.
Вы должны были получить копию GNU General Public License
наряду с JSON-RPC PHP; если нет, то пишите на свободное программное обеспечение
Foundation, Inc., 51 Franklin St, Пятый этаж, Boston, MA 02110-1301 USA
* /
/ **
* Объект этого класса являются общими клиентами jsonRPC 1.0
* http://json-rpc.org/wiki/specification
*
* @author Серджио
* /
/ **
* Debug состояние
*
* @var булево
* /
частный $ отлаживать;
/ **
* URL-адрес сервера
*
* @var строка
* /
частный $ URL;
/ **
* Запрос идентификатор
*
* @var целое
* /
частный $ ID;
/ **
* Если это правда, уведомления выполняются вместо запросов
*
* @var булево
* /
частный $ уведомление знак равно ложный;
/ **
* Принимает параметры соединения
*
* @param строка $ URL
* @param булева $ отлаживать
* /
публичная функция __construct($ URL,$ отлаживать знак равно ложный) {
// URL сервера
$ this-->URL знак равно $ URL;
// прокси
пусто ($ прокси)? $ this-->полномочие знак равно «» : $ this-->полномочие знак равно $ прокси;
// состояние отладки
пусто ($ отлаживать)? $ this-->отлаживать знак равно ложный : $ this-->отлаживать знак равно правда;
// Идентификатор сообщения
$ this-->Я бы знак равно 1;
}
/ **
* Устанавливает состояние уведомления объекта. В этом состоянии, уведомления выполняются, вместо запросов.
*
* @param булева $ уведомление
* /
публичная функция setRPCNotification($ уведомление) {
пусто ($ уведомление)?
$ this-->уведомление знак равно ложный
:
$ this-->уведомление знак равно правда;
}
/ **
* Выполняет запрос jsonRCP и получает результаты в виде массива
*
* @param строка $ метод
* @param массив $ PARAMS
* @return массив
* /
публичная функция __вызов($ метод,$ Params) {
// проверить
если (!is_scalar($ метод)) {
бросить новый исключение(«Имя метода не имеет значения скалярного»);
}
// проверить
если (is_array($ Params)) {
нет // нет ключей
$ Params знак равно array_values($ Params);
} Еще {
бросить новый исключение(«Params должны быть предоставлены в виде массива»);
}
// устанавливает уведомление или запрос задачи
если ($ this-->уведомление) {
$ currentId знак равно НОЛЬ;
} Еще {
$ currentId знак равно $ this-->Я бы;
}
// готовит запрос
$ запрос = Массив (
«Метод» знак равно> $ метод,
«Титулы» знак равно> $ Params,
'Я бы' знак равно> $ currentId
);
$ запрос знак равно json_encode($ запрос);
$ this-->отлаживать && $ this-->отлаживать.знак равно'***** Запрос *****'.«\ П».$ запрос.«\ П»."***** Конец запроса *****.«\ П \ п»;
// выполняет POST HTTP
$ КЛЮЧ = Массив ('HTTP' знак равно> массив (
«Метод» знак равно> 'ПОСЛЕ',
«Заголовок» знак равно> 'Content-тип: / JSON',
«Содержание» знак равно> $ запрос
));
$ контекст знак равно stream_context_create($ КЛЮЧ);
если ($ Ф.П. знак равно Еореп($ this-->URL, 'р', ложный, $ контекст)) {
$ ответ знак равно «»;
в то время как($ строка знак равно fgets($ Ф.П.)) {
$ ответ.знак равно отделка($ строка).«\ П»;
}
$ this-->отлаживать && $ this-->отлаживать.знак равно'***** ответ сервера *****.«\ П».$ ответ."***** Конец ответа сервера *****.«\ П»;
$ ответ знак равно json_decode($ ответ,правда);
} Еще {
бросить новый исключение(«Не удалось подключиться к».$ this-->URL);
}
// отладочный вывод
если ($ this-->отлаживать) {
эхо nl2br($ отлаживать);
}
// окончательные проверки и возврат
если (!$ this-->уведомление) {
// проверить
если ($ ответ['Я бы'знак равно $ currentId) {
бросить новый исключение('Неверный ответ идентификатор (ID запроса:'.$ currentId.«Идентификатор ответа:».$ ответ['Я бы'].')');
}
если (!нулевой($ ответ['ошибка'])) {
бросить новый исключение(«Ошибка запроса:».$ ответ['ошибка']);
}
вернуть $ ответ[«Результат»];
} Еще {
вернуть правда;
}
}
}
?>