В этом разделе перечислены свойства и методы объекта HttpRequester
Объект HttpRequester предназначен для формирования HTTP запросов к стороннем WEB серверам в контексте JavaScript
new HttpRequester() Создать объект
post.install('QUrl'); // добавить конструктор QUrl в контекст
// Создать объект
var rqst = new HttpRequester();
// Функция обработчик
var funcAns = function funcAns()
{
// Событие произошло
// this - это объект HttpRequester, который указан при подсоединении обработчика к сигналу
//console.log(this); // Вывести в лог описание всех свойств объекта HttpRequester
post.log('' + this.header);
post.log('=========================================================');
post.log('' + this.respStr());
// при желании можно отсоединить обработчик от сигнала finished
this.finished.disconnect(this, funcAns);
}
// Сконфигурить реквестер
//rqst.user = 'userName';
//rqst.password = 'userPass';
rqst.url = new QUrl().setScheme('https')
.setHost('market.yandex.ru')
.setPort(443)
.setPath('/catalog/54440');
// Присоединить функцию обработчик к сигналу finished и передать объект в функцию funcAns
rqst.finished.connect(rqst, funcAns);
// Отправить запрос (после выполнения HttpRequester эмитирует сигнал finished)
rqst.get();
Пример использования:
// Создать объект
var rqst = new HttpRequester();
//свойство параметра чтение/запись:
var headerString = rqst.header; // Чтение
rqst.url = new QUrl() // Запись
.setScheme('https')
.setHost('market.yandex.ru')
.setPort(443)
.setPath('/catalog/54440');
QUrl rqst.url Чтение/запись
Адрес URL
var myUrl = rqst.url; // Прочесть
rqst.url = myUrl.setScheme('https') // установить новый адрес
.setHost('market.yandex.ru')
.setPath('/catalog/54440');
String rqst.htype Только чтение
Тип содержимого ответа
// Функция обработчик
var funcAns = function funcAns()
{
post.log(rqst.htype)// Выведет в лог "text/html; charset=UTF-8"
}
int rqst.hlenght Только чтение
Размер заголовка ответа в байтах
Date rqst.hdatetime Только чтение
Дата заголовка (если определено в ответе)
int rqst.httpStatus Только чтение
Статус ответа (если запроса небыло, то возвращает 0)
String rqst.header Только чтение
Весь заголовок ответа
String rqst.user Чтение/запись
HTTP-авторизация на удаленном ресурсе. Имя пользователя
String rqst.password Чтение/запись
HTTP-авторизация на удаленном ресурсе. Пароль пользователя
int rqst.error Только чтение
Ошибка выполнения запроса. 0 если успешно
String rqst.errorString Только чтение
Строковое представление ошибки выполнения запроса
int rqst.timeout Чтение/запись (по умолчанию 5000)
Таймаут соединения в ms
bool rqst.asinc Чтение/запись (по умолчанию true)
Режим асинхронный/синхронный
bool rqst.raw Чтение/запись (по умолчанию false)
При включеном отключается multipart/form-data; boundary
Влияет на поведение методов post(), put()
bool rqst.traceLog Чтение/запись (по умолчанию false)
Вывод трассирующих сообщений в лог
генерируется объектом HttpRequester при завершении HTTP-запроса
// подсоединить к сигналу finished функцию обработчик
rqst.finished.connect(function finished(){
post.log(rqst.error ? 'e' : 'i',
'Выполнено ' + (rqst.error ? 'с ошибкой: ' + rqst.errorString : 'успешно') );
});
// эквивалентно следующей конструкции
function finished(){
post.log(rqst.error ? 'e' : 'i',
'Выполнено ' + (rqst.error ? 'с ошибкой: ' + rqst.errorString : 'успешно') );
}
rqst.finished.connect(finished);
// удобно передавать объект в функцию в качестве this
// следующий код поясняет механизм передачи
function finished(){
// this - это переданный объект rqst - эквивалент sender() в Qt
post.log(this.error ? 'e' : 'i',
'Выполнено ' + (this.error ? 'с ошибкой: ' + this.errorString : 'успешно') );
}
rqst.finished.connect(rqst, finished);
bool rqst.get() функция
bool rqst.post() функция
bool rqst.put() функция
bool rqst.del() функция
Запросить. Аргументами могут выступать: (справедливо для svn rev.940)
URL адрес, булевый аргумент raw, калбэк функция и контекст ее выполнения (в любой последовательности)
Перед вызовом post() или put() необходимо установить тело запроса, выполнив rqst.setPostBody(var)
var json = {dt: new Date(), ms: new Date().valueOf()};
rqst.setPostBody(json);
rqst.url = 'http://127.0.0.1/';
rqst.addExtHeader('Content-Type', 'application/json; charset=UTF-8');
rqst.raw = 1; rqst.post();
// идентично следующей строке
rqst.post(1); // raw режим можно включить и в аргументах
//--------------------------------------------------------------
// возможен запуск с указанием калбэк функции, которую нужно выполнить по завершению запроса
// сигнала finished() при этом не будет
rqst.post('http://127.0.0.1/', 1, function callBack(){});
// что идентично следующей строке
rqst.post(this, function callBack(){}, true, 'http://127.0.0.1/');
void rqst.setPostBody(var) Процедура
Установить тело POST запроса. В качестве аргумента могут выступать String, ByteArray, File, Object ...
Object будет автоматически трансформирован в json строку
void rqst.appendPostFrag(var frag, String name = "", String filename = "", String contentType = "") Процедура
Добавить фрагмент в тело POST
void rqst.clearPostFrags() Процедура
удалить все фрагменты
String rqst.respStr() Функция
Тело ответа в виде строки
ByteArray rqst.respByteArr() Функция
Тело ответа в виде массива ByteArray
Array rqst.respArr() Функция
Тело ответа в виде нативного массива
int rqst.respObj(QObject) Функция
Скопировать ответ в QObject (у объекта должен быть метод data(QByteArray*)
bool rqst.abort() Функция
Отменить выполнение
При отмене будет выполнен обработчик сигнала rqst.finished(),
в котором будет доступна ошибка (rqst.error === 5 Операция отменена)