Документация
ОС Аврора 5.1.5

HTTP-запрос средствами JS и QML

В QML-коде приложения для ОС Аврора можно написать клиентский http-запрос к удалённому серверу. Для асинхронного получения данных по сети следует использовать компонент XMLHttpRequest в версии Qt 5.6.

Дерево DOM xml-ответа, поддерживаемое QML, представляет собой сокращённое подмножество основного API DOM уровня 3, поддерживаемого в веб-браузере.

Для того чтобы отправить запрос и получить ответ, нужно выполнить следующие действия:

  1. Средствами JavaScript создать новый XMLHttpRequest.
  2. Опционально можно задать свойству responseType тип ожидаемого ответа, например, json.
  3. Присвоить функции onreadystatechange функцию-обработчик ответа от сервера. Доступ к строке с ответом происходит через свойство responseText у объекта XMLHttpRequest. Преобразовать строку с ответом можно с помощью JavaScript-функций, например, в формат json с помощью функции JSON.parse.
  4. Создать запрос с помощью функции open. Ей достаточно передать два аргумента: тип запроса (GET, POST и т. д.) и URL-адрес.
  5. Опционально можно задать заголовки запроса через функцию setRequestHeader.
  6. Отправить запрос с помощью функции send. В качестве аргумента можно ей передать тело запроса.

Пример GET-запроса к открытому API jsonplaceholder.typicode.com:

function requestPhotos() {
    var xhr = new XMLHttpRequest();
    xhr.responseType = 'json';
    xhr.onreadystatechange = function() {
        if (xhr.readyState === XMLHttpRequest.DONE) {
            var json = JSON.parse(xhr.responseText);
            console.log(json);
        }
    }
    xhr.open("GET", "https://jsonplaceholder.typicode.com/photos");
    xhr.send();
}

Пример POST-запроса к открытому API reqres.in:

function requestUser() {
    var xhr = new XMLHttpRequest();
    xhr.responseType = 'json';
    xhr.onreadystatechange = function() {
        if (xhr.readyState === XMLHttpRequest.DONE) {
            var json = JSON.parse(xhr.responseText);
            console.log(json);
        }
    }
    xhr.open("POST", "https://reqres.in/api/users");
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    var body = 'name=' + encodeURIComponent("morpheus") +
        '&job=' + encodeURIComponent("leader");
    xhr.send(body);
}

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.