exponenta event banner

полный

Класс: 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 и повторно обрабатывает эту полезную нагрузку на основе типа содержимого. Этот случай возникает при ошибке преобразования или при указании 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