complete

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

Обработайте или повторно обработайте полезную нагрузку Content-Type

Описание

msg = complete(msg) преобразует msg.Body.Payload свойство к msg.Body.Data использование текущего значения поля заголовка Content-Type в 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 и повторно обрабатывает полезную нагрузку на основе Content-Type. Этот случай возникает при ошибке преобразования или если вы указали SavePayload. Но если преобразование входящих данных произошло первоначально, но было неправильным, Body.Data задан и Body.Payload может быть пустым. В этом случае измените значение ContentTypeField в полученном сообщении на требуемый тип и вызовите этот метод. complete пытается преобразовать данные назад в полезную нагрузку на основе Body.ContentType свойство, используемое для преобразования первоначально. Затем он переопределяется с помощью нового заголовка Content-Type в ответном сообщении. Если 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. Это преобразование не сохраняет никаких символов, отличных от ASCII, которые были искажены при преобразовании исходной полезной нагрузки с помощью text/plain но сохраняет исходные данные ASCII.

Введенный в R2016b