Класс: matlab.net.http.RequestMessage
Пакет: matlab.net.http
Отправка HTTP- запроса сообщения и получение ответа
[
отправляет 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
. Как правило, a '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
автоматически добавляет поле заголовка User-Agent. Если вы не хотите этого поведения, добавьте HeaderField('User-Agent')
в заголовок. Поля заголовка с пустыми значениями в сообщение не включаются. Невозможно подавить поля Хост и Подключение.
Чтобы переопределить значение, которое 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
свойство ошибки, возвращенной с сервера.
complete
| HTTPException
| HTTPOptions
| LogRecord
| matlab.net.http.field.GenericField
| matlab.net.http.io.ContentConsumer
| matlab.net.http.io.ContentProvider
| matlab.net.URI