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