завершенный

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

Подтвердите и завершите сообщение запроса HTTP без отправки

Синтаксис

[completedrequest,target] = complete(request,uri)
[completedrequest,target] = complete(request,uri,options)

Описание

[completedrequest,target] = complete(request,uri) добавляет и подтверждает поля заголовка сообщения и преобразовывает данные как метод RequestMessage.send, но не отправляет сообщение. complete принимает объект HTTPOptions по умолчанию определить, как завершить и подтвердить запрос.

Используйте метод complete, чтобы исследовать содержимое сообщения запроса для отладки целей.

Чтобы заполнить и подтвердить свойства Header и RequestLine, этот метод игнорирует свойство Completed в request. Метод всегда возвращает измененный completedrequest. Если request не завершается, то ошибки метода. Можно использовать это поведение, чтобы определить, допустим ли вручную завершенный запрос.

Если Completed не установлен, то этот метод всегда преобразовывает Data в request.Body и хранит результат в completedrequest.Body.Payload, перезаписывая любое предыдущее содержимое Payload. Это означает, что и Data и Payload в completedrequest.Body содержат значения. Это отличается от поведения send, который не сохраняет Payload, если HTTPOptions.SavePayload не установлен. Если сообщение содержит большой объем данных, то использование памяти и время преобразования может быть фактором.

Однако, если request.Body содержит ContentProvider, то complete не вызывает провайдера, чтобы создать данные. completedrequest.Body содержит тот же ContentProvider.

пример

[completedrequest,target] = complete(request,uri,options) предоставляет дополнительные возможности для проверки и завершения сообщения запроса.

Если вы намереваетесь отправить completedrequest, чтобы избежать стоимости повторной валидации, отправьте его в target вместо uri, с помощью того же options. Зависящие от времени поля заголовка, такие как Date, которые добавляются методом send, не обновляются, когда отправлено снова с помощью completedrequest.

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

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

Запросите сообщение, заданное как matlab.net.http.RequestMessage object.

Передайте место назначения, заданное как объект matlab.net.URI или строка или вектор символа, приемлемый для конструктора.

Дополнительные опции, заданные как объект matlab.net.http.HTTPOptions, для обработки запроса и сообщений ответа.

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

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

Завершенный и подтвержденный запрос, возвращенный как свойство matlab.net.http.RequestMessage object. The Completed, верен.

Завершенный URI, возвращенный как matlab.net.URI object.

Примеры

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

Создайте сообщение запроса для вымышленного веб-сайта. Затем подтвердите и завершите запрос, не отправляя его.

request = matlab.net.http.RequestMessage();
url = 'myschool.edu/campus.jpg';
options = matlab.net.http.HTTPOptions('SavePayload',true);
[request,url] = complete(request,url,options);
show(request)
GET /campus.jpg HTTP/1.1
Host: myschool.edu
User-Agent: MATLAB/9.0.0.366741 (R2016b)
Date: Wed, 13 Jul 2016 17:21:08 GMT
Connection: close

MATLAB® отображает User-Agent и значения Date, относящиеся к вашей системе.

Покажите обновленный URL.

string(url)
ans = http://myschool.edu/campus.jpg

Ограничения

  • Завершенный запрос не добавляет полей заголовка авторизации, которые могут быть необходимы для аутентификации к серверу или прокси, даже если свойство Authenticate установлено в options. Не может быть возможно определить то, чего сервер требует, не отправляя сообщение. Чтобы видеть, что было отправлено в обмене аутентификации, исследуйте аргументы completedrequest или history, возвращенные методом send.

Советы

  • Чтобы неоднократно отправлять то же сообщение запроса, отправьте completedrequest. В противном случае, если вы отправляете request, затем MATLAB неоднократно подтверждает сообщение. Также обязательно задайте target как URI и тот же входной параметр options. Зависящие от времени поля заголовка, такие как Дата, которую добавляет метод send, не обновляются при отправке completedrequest.

  • Чтобы завершить сообщение, не преобразовывая данные, установите свойство Completed на true прежде, чем вызвать метод complete. Если Completed верен, и request.Body является объектом MessageBody, то метод complete принимает, что текущая стоимость request.Body.Payload является желаемой, даже если это пусто.

    Это поведение отличается от метода send. Если request.Body.Payload пуст, то send преобразовывает и отправляет непустые значения Body.Data, даже если Completed верен.

Введенный в R2017b

Была ли эта тема полезной?