В этом разделе перечислены свойства и методы объекта 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();


Свойства (property)

Пример использования:

// Создать объект
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)
Вывод трассирующих сообщений в лог


Сигналы

void rqst.finished();

генерируется объектом 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 Операция отменена)