complete

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

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

Описание

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