exponenta event banner

полный

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

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

Описание

[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 объект.

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

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

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

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

Завершенный и проверенный запрос, возвращенный как matlab.net.http.RequestMessage объект. Completed свойство имеет значение true.

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

Примеры

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

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

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 true и request.Body является MessageBody объект, затем complete метод предполагает, что текущее значение request.Body.Payload является желательным, даже если он пуст.

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

Представлен в R2016b