Класс: 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 является ContentProviderMATLAB вызывает провайдера, чтобы получить данные, которые будут отправлены.
Если заголовок уже содержит поле, которое обычно добавляет метод, то 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