завершенный

Класс: matlab.net.http.
Пакет: matlab.net.http

Процесс или повторно обрабатывает Тип контента полезной нагрузки ответа

Синтаксис

msg = complete(msg)
msg = complete(msg,consumer)

Описание

msg = complete(msg) преобразовывает свойство msg.Body.Payload в msg.Body.Data с помощью текущего значения поля заголовка Типа контента в msg.

пример

msg = complete(msg,consumer) возвращает копию сообщения с msg.Body.Payload, обработанным matlab.net.http.io.ContentConsumer. Потребитель может сохранить его результат в msg.Body.Data или обработать его некоторым другим способом.

Используйте метод complete когда:

  • Body.Data был сброшен или не установлен правильно, потому что сервер вставил неправильный Тип контента в сообщение, или Тип контента отсутствовал.

  • Вы устанавливаете свойство ConvertResponse HTTPOptions.ConvertResponse на false предотвращать преобразование данных, когда это было первоначально получено.

  • Вы задали неправильный consumer при отправке сообщения.

Если было исключение, обрабатывающее полученное сообщение, или если вы устанавливаете свойство HTTPOptions.SavePayload, когда вы отправили запрос, Body.Payload в этом сообщении ответа содержит исходную полезную нагрузку (если таковые имеются). В этом случае измените заголовок этого сообщения, чтобы добавить или исправить поле Content-Type. Затем вызовите метод complete, чтобы обработать ответ, как будто сервер вставил то поле Content-Type первоначально. Результатом является новое содержимое в Body.Data и/или Data, обработанном заданным consumer.

Если Body.Payload установлен, то этот метод игнорирует текущее значение Body.Data и повторно обрабатывает ту полезную нагрузку на основе Типа контента. Этот случай происходит для ошибки преобразования или если вы задали SavePayload. Но если преобразование входящих данных, за которыми следуют первоначально, но, было неправильным, Body.Data установлен, и Body.Payload может быть пустым. В этом случае измените ContentTypeField в полученном сообщении к желаемому типу и затем вызовите этот метод. complete пытается преобразовать данные назад в полезную нагрузку на основе свойства Body.ContentType, используемого, чтобы преобразовать его первоначально. Затем это повторно преобразовано с помощью нового заголовка Типа контента в сообщении ответа. Если Data не пуст, то возвращенный Body.Payload установлен.

Если вы задали SavePayload при отправке сообщения, complete использует исходную полезную нагрузку, которая была сохранена в Body.Payload вместо этого, без потери информации.

Если свойство ResponseMessage.Completed установлено, complete ничего не делает. В сообщении, которое содержит Body, обычно устанавливается это свойство, только если msg.Body.Payload был установлен.

Входные параметры

развернуть все

Сообщение ответа, заданное как объект matlab.net.http.ResponseMessage.

Выходные аргументы

развернуть все

Завершенное сообщение ответа, возвращенное как объект matlab.net.http.ResponseMessage.

Примеры

развернуть все

Примите, что сервер возвратил ответ, содержащий строку JSON, но задал поле Content-Type text/plain вместо application/json. В этом случае Body.Payload пуст, и msg.Body.Data содержит строку ASCII (поскольку набором символов по умолчанию для text/plain является us-ascii). Обработать эти данные и получить структуру JSON:

response = response.changeFields('Content-Type','application/json');
response = response.complete();
data = response.Body.Data;

Вызов complete преобразовывает Body.Data в Body.Payload с помощью кодирования us-ascii. Метод затем повторно преобразовывает Body.Payload в utf-8 прежде, чем обработать его как строку JSON и сохранить результат в Body.Data. Это преобразование не сохраняет символов non-ASCII, которые были искажены при преобразовании исходной полезной нагрузки с помощью text/plain, но сохраняет исходные данные о ASCII.

Введенный в R2017b