Отправить HTTP запрос
Активность предназначена для отправки HTTP-запросов по указанному адресу.
Данная активность находится в разделе HTTP.

Свойства активности

Панель свойств активности "Отправить HTTP запрос"
Панель свойства активности "Отправить HTTP запрос" имеет следующие настройки:
  • Строка - данные, передаваемые в ответе запроса будут сохраняться в указанную в свойстве "Контент" переменную.
  • Файл - данные, передаваемые в ответе запроса будут сохраняться в указанный в свойстве "Путь" файл.
  • Заголовок - позволяет изменить отображаемое название активности в рабочей области;
  • Url - указание по какому URL-адресу будет отправлен запрос;
  • Таймаут (с.) - время в секундах, в течение которого будет ожидаться ответ от сервера на запрос;
  • Метод - HTTP - метод, по которому будет отправлен запрос. Доступные методы: GET, POST, PUT, DELETE;
  • Данные - поле для ввода данных в виде строки, которые будут отправлены в теле запроса. Данный параметр передается только при использовании методов запроса PUT и POST. Пример записи данных указан ниже в примере;
  • Кодировка - указание кодировки данных, которые будут отправлены из свойства "Данные" (utf-8, unicode и т.д.);
  • Тип контента - указание информации для принимающего запрос сервера о типе контента, который отправляется в свойстве "Данные";
  • Заголовки - указание заголовков HTTP-запроса. При нажатии кнопки "Редактировать", открывается окно для заполнения информации о заголовках. Заполнение заголовков происходит по шаблону ключ : значение;
  • Контент - переменная, куда будет записано содержимое тела ответа;
  • Коллекция заголовков - переменная, куда будет записаны заголовки ответа в форме словаря ключ (заголовок) : значение;
  • Статус код - переменная, куда будет записан код ответа (состояния) от сервера.
  • Путь - путь к файлу в который будут сохраняться данные из тела ответа.

    Окно редактирования заголовков
    Пример использования активности
    Давайте попробуем отправить запрос серверу через его API с помощью активности "Отправить HTTP запрос". Для этого воспользуемся тестовым сервером с общедоступным API: {JSON} Placeholder. Он представляет набор сервисов для тестирования и представляет собой сгенерированную базу пользователей, размещенных постов и т.д.
    Данный API предоставляет несколько ресурсов. В этом примере мы воспользуемся ресурсом /posts, на котором расположен набор информации о неких постах (сообщениях) в формате JSON.

      Информация, предоставляемая ресурсом /post
      Для получения необходимых параметров HTTP запроса и описания структуры отправляемых с запросом данных, необходимо воспользоваться документацией API. Документация по сервису из примера находится по ссылке.
      Запрос методом GET
      Чтобы получить данные о размещенных постах с сервера, воспользуемся методом GET.
      Это сгенерированные данные, необходимые для тестирования.
      В данном случае нам не нужно заполнять заголовки и записывать информацию из тела запрос в свойства "Данные".
      В данном случае необходимо задать следующие параметры:
      • Url
      • Метод
      • Контент
      • Коллекция заголовков
      • Статус код
      1. Заполните URL. В данном случае адрес: https://jsonplaceholder.typicode.com/posts
      Так как строка адреса включает в себя символ косой черты (слеш) , то строку нужно экранировать с помощью знака "эт" @, как показано на изображении ниже.
      2. Выберите метод Get в свойстве "Метод";
      3. Также укажите выходные переменные "Контент", "Коллекция заголовков" и "Статус код". В данном примере они были названы как response_content, response_header, response_code.
      Как видно, мы не редактировали заголовки, так как этого не требуется для рассматриваемого API.

      Свойства активности для выполнения Get запроса
      4. Проверьте на ошибки и выполните скрипт;
      5. При удачной передачи запроса, в ответе должен быть получен код 200. В соответствии с документацией используемого API, на подобный запрос в ответе должны прийти данные в формате JSON, представленный в виде тестовой строки.
      6. С помощью отладки, проверим данные записанные в выходные переменные активности;

      Выходные переменные активности

      Содержимое переменной response_content

      Содержимое переменной response_header
      7. В переменную кода статуса response_code был записан HTTP код 200, что означает успешность выполнения запроса. Как видно на изображениях выше, в переменную с данными ответа response_content были записаны данные в виде строки в формате типа json. Здесь содержится вся информация из тела запроса по постам. При необходимости такую строку можно распарсить с помощью активности "JSON". Также в переменную response_header были записаны заголовки ответа в виде словаря ключ (заголовок) : значение.
      Обратите внимание, что в переменную, указанную в выходном свойстве "Контент", могут быть записаны данные разного формата (json, xml и т.д.). Эти данные представляют собой текст виде строки System.String. Обычно формат данных, пришедших в теле ответа, указывается в заголовке ответа Content-Type.
      8. Нам удалось отправить GET запрос по HTTP протоколу и получить всю информацию о размещенных постах.
      Запрос методом POST
      Сервис {JSON} Placeholder также дает возможность протестировать POST запрос, при котором отправляется данные для их размещения на сервере.
      Попробуем разместить пост. Так как сервер разработан только для тестирования, то сервер только эмулирует размещение данных. При корректности отправляемых данных и успешности запроса, будет направлен соответствующий документации API ответ. Действительных же изменений данных на сервере не происходит.
      В данном случае необходимо задать следующие параметры:
      • Url
      • Метод
      • Данные
      • Кодировка
      • Тип контента
      • Контент
      • Коллекция заголовков
      • Статус код
      1. Заполните URL. В данном случае адрес: https://jsonplaceholder.typicode.com/posts
        2. Выберите метод Post в свойстве "Метод";
        3. Теперь заполним параметр "Данные".
        Здесь необходимо разместить в виде строки данные, которые будут размещены в теле запроса и переданы на сервер. В данном примере это информация о посте, который мы хотим разместить на сервере. Так мы будем отправлять запрос на REST API, необходимо узнать в каком формате эти данные должны быть представлены. Подобная информация дается в документации к API. В нашем случае это формат JSON, что указано в примере запроса Creating a resource ('Content-type':'application/json').

        Для размещения поста на сервере, необходимо указать следующие пары ключ: значение:
        "title": "название поста"
        "body": "основной текст поста"
        "userId": "идентификатор пользователя"
        Структура файла JSON представляет собой набор пар ключ: значение.
        При передачи данных, все строковые значения должны быть указаны в двойных кавычках(").
        В связи с тем, что свойство "Данные" на вход принимает только строковый тип данных, необходимо изолировать внутренние кавычки.
        Передадим пост для размещения с параметрами: "title": "foo", "body" :"bar", "userId": 1
        Это можно сделать двумя способами:
        • с помощью знака обратной наклонной черты (\);
        • с помощью двух кавычек ("").

        Пример использования (\")

        Пример использования ("")
        Обратите внимания, что в первом случае необходимо произвести запись в одну строку и в данном конкретном случае ставить знак @ необязательно.
        Во втором случае необходимо изолировать всю строку знаком @. При этом сохраняется наглядность данных;
        4. Кодировка "utf-8" указана в поле ввода свойства "Кодировка" по умолчанию;
        5. В поле свойства "Тип контента" введите "application/json", что соответсnвует формату JSON;
        6. Также укажите выходные переменные "Контент", "Коллекция заголовков" и "Статус код". В данном примере они были названы как response_content, response_header, response_code;
        7. Проверьте на ошибки и выполните скрипт;

        Настройки свойств активности для POST запроса
        8. При удачной передачи запроса, в ответе должен быть получен код 201, что говорит о создании новой записи. В соответствии с документацией используемого API, на подобный запрос в ответе должны прийти данные в формате JSON, представленный в виде тестовой строки с информацией о добавленной записи.
        9. С помощью отладки, проверим данные записанные в выходные переменные активности;

        10. Как видно, пришел код 201;

        Содержимое переменной response_content
        11. Как видно пришел ответ с отправленной нами информацией и дополнительно был добавлен id поста со значение 101;
        Нам удалось отправить POST запрос по HTTP протоколу и разместить новые данные на сервере.