Класс: matlab.net.http.
Пакет: matlab.net.http
Отправьте запрос HTTP передают и получают ответ
[response,completedrequest,history] = send(request,uri)
[response,completedrequest,history] = send(request,uri,options,consumer)
[
отправляет сообщение response
,completedrequest
,history
] = send(request
,uri
)request
в веб-сервис, заданный uri
, и возвращает response
, если таковые имеются. Если никакое свойство request.Method
не задано, то метод send
устанавливает свойство на 'GET'
.
По умолчанию send
проверяет семантическую правильность заголовков и другие части сообщения и завершает uri
. Метод также заполняет любые необходимые поля заголовка для правильно сформированного запроса. Если request.Body
является MessageBody
, свойство Payload
которого уже не установлено, то send
вызывает соответствующие функции преобразования, чтобы преобразовать любой request.Body.Data
в вектор байтов, представляющих полезную нагрузку HTTP, которая будет отправлена, как описано для MessageBody.Data
. Обычно, запрос 'GET'
не содержит данные, но метод отправляет Body
независимо от RequestMethod
. Если сервер возвращает данные в своем ответе, и никакой consumer
не задан, то send
преобразовывает те данные в данные MATLAB® и сохраняет его в response.Body.Data
. Смотрите MessageBody.Data
для получения дополнительной информации о преобразовании данных.
Если request.Body
является ContentProvider
, то MATLAB вызывает провайдера, чтобы заставить данные быть отправленными.
Если заголовок уже содержит поле, которое обычно добавляет метод, то send
проверяет, что поле имеет ожидаемое значение. Можно заменить поведение по умолчанию можно следующим образом.
Чтобы отправить сообщение, как без любой проверки или изменения заголовка, устанавливает свойство request.Completed
на true
перед отправкой. Если бы вы использовали метод complete
, чтобы завершить запрос, то необходимо задать то же значение uri
и options
, который вы предоставили complete
, или могут быть непредсказуемые результаты. Даже если Completed
будет установлен, незаданные поля в RequestLine
будут заполнены в значениями по умолчанию.
Чтобы позволить методу send
проверять и изменять заголовок, но подавлять добавление конкретного поля заголовка, которое могут добавить send
или ContentProvider
, добавляют что поле в request.Header
с пустым значением ([]
). Например, send
автоматически добавляет поле заголовка Агента пользователя. Если вы не хотите это поведение, то добавьте HeaderField('User-Agent')
в заголовок. Поля заголовка с пустыми значениями не включены в сообщение. Поля Host и Connection не могут быть подавлены.
Чтобы заменить значение, которое метод send
добавляет для данного поля заголовка, добавьте свой собственный экземпляр того поля прежде, чем отправить или завершить сообщение. Однако это не заменит поле заголовка, которое может добавить ContentProvider
. Однако для некоторых типов поля заголовка, send
может все еще отклонить сообщение, если значение не допустимо. Чтобы предотвратить любую проверку значения данного поля или заменить поле, которое добавляет ContentProvider
, добавляет, поле типа matlab.http.field.GenericField
к заголовку с желаемым именем и значением. Ни send
, ни ContentProvider
не добавят полей заголовка с именами, равными никаким заголовкам GenericField
, и не будут проверять их правильность.
Чтобы отправить необработанные двоичные данные без преобразования, можно вставить вектор uint8
или в Body.Data
или в Body.Payload
. Единственная разница - то, что данные в Body.Data
подвергаются преобразованию на основе поля Content-Type в сообщении, в то время как Body.Payload
не. send
всегда пытается преобразовать непустой Body.Data
, если Body.Payload
пуст, даже если Completed
уже установлен. Смотрите MessageBody.Data
для правил преобразования.
Всегда проверяйте свойство response
Status
определить, был ли запрос принят. Состояние ошибки:
MException
— Сообщение не хорошо формируется и не может быть завершено.
HTTPException
— Сообщение завершается, но веб-сервис недостижим или не отвечает в период тайм-аута, заданный в options
.
Свойство Status
response
— веб-сервис отвечает и возвращает ошибочное состояние HTTP. send
обычно возвращается, устанавливая свойство Status
на ошибку, возвращенную в сервер.
HTTPException
| HTTPOptions
| LogRecord
| RequestMessage.complete
| matlab.net.URI
| matlab.net.http.field.GenericField
| matlab.net.http.io.ContentConsumer
| matlab.net.http.io.ContentProvider