matlab.net.http.io.MultipartFormProvider class

Пакет: matlab.net.http.io
Суперклассы: matlab.net.http.io.MultipartProvider

ContentProvider для отправки сообщений multipart/form-data

Описание

Используйте этого поставщика для отправки многочастной формы на сервер. Форма multipart является сообщением, содержащим ряд частей, где каждая часть имеет «имя управления» и его данные. Данные могут быть любыми типами, разрешенными для RequestMessage.Body.Data или другой ContentProvider.

Некоторые серверы требуют, чтобы несколько частей под одним и тем же именем находились во вложенной части multipart/mixi.Чтобы отправить вложенные части, оберните детали в MultipartProvider. Для примера, чтобы отправить сообщение, как описано в самом конце главы 17 спецификации HTML 4.01 для данных формы:

fps = FileProvider(["file1.txt","file2.gif"]); % get array of providers
mp = MultipartProvider(fps);
formProvider = MultipartFormProvider("submit-name","Larry","files",mp);
req = RequestMessage('put',[],formProvider);
req.send(uri);

The matlab.net.http.io.MultipartFormProvider класс является handle класс.

Создание

Описание

provider = MultipartFormProvider(Name,Part) создает "multipart/form-data" содержимое, заданное одним или несколькими аргументами в виде пар имя-часть. Part является формой-данными, содержащей Name и его содержимое. The Part аргументами могут быть любые типы, поддерживаемые MultipartProvider, включая другие ContentProvider объекты.

Если a Part является массивом, это эквивалентно повторению Name,Part для каждого элемента массива. Для примера, заявление:

MultipartFormProvider("name",FileProvider(["file1" "file2"]))

эквивалентно:

MultipartFormProvider("name",FileProvider("file1"),"name",FileProvider("file2"));

Свойства

расширить все

Общественная собственность

Имена деталей, заданные как строка.

Атрибуты:

GetAccess
public
SetAccess
public

Части тела сообщения, заданные как массив ячеек с одним или несколькими из следующих значений:

ContentProvider объект

The MultipartProvider делегирует создание части указанному провайдеру (называемому делегатом), вызывая его полный метод для получения информации заголовка о детали и ее getData способ получения данных. Header делегата свойство используется для заголовка детали. Любой подкласс ContentProvider можно указать здесь. Как правило, делегат не задает длину содержимого и не реализует expectedContentLength метод, поскольку конец детали обозначается краевой строкой, а не полем заголовка. Если этот метод реализован, чтобы вернуть непустое значение, то значение используется только для ограничения длины содержимого, а не для создания поля Content-Length.

RequestMessage объект

The MultipartProvider отправляет Header и Body от RequestMessage Если Тело Payload задается свойство, затем оно используется для необработанной полезной нагрузки. В противном случае Тело Data свойство преобразуется на основе его типа или поля Content-Type в Header, как описано для MessageBody.Data. Эта опция полезна, если у вас есть данные для отправки и вы хотите воспользоваться обработкой по умолчанию этих данных, которые MATLAB® обычно делает при отправке RequestMessage. Это позволяет вам задать пользовательские поля заголовка в запросе, который будет использоваться в качестве Header детали и управляйте преобразованием данных, не создавая ContentProvider подкласс. The RequestMessage.RequestLine свойство проигнорировано.

MessageBody объект

The MessageBody обрабатывается так же, как если бы это было в RequestMessage в котором не было поля Content-Type. Эта опция используется, если обработки по умолчанию данных на основе их типа достаточно, и вы не должны задавать какие-либо пользовательские поля заголовка для детали. MATLAB вставляет поле Content-Type в деталь на основе типа данных. См. MessageBody.Data для правил преобразования.

Массив ContentProvider, RequestMessage, и/или MessageBody объекты

Это обрабатывает каждый элемент массива как деталь. Не массив ячеек.

Указатель на getData метод

Этот метод должен иметь подпись ContentProvider.getData. В этом случае для типа содержимого детали задано значение "application/octet-stream", поэтому эта опция полезна для отправки двоичных данных. При использовании этой опции вы не можете задать какие-либо пользовательские поля заголовка для детали.

Любой другой тип

Если тип не совпадает ни с одним из этих типов и не является указателем на функцию, то он обрабатывается так, как если бы он присутствовал в Data свойство MessageBody. См. описание для MessageBody типы.

Атрибуты:

GetAccess
public
SetAccess
public
Dependent
true

Поля заголовка сообщения или детали, заданные как вектор одного или нескольких matlab.net.http.HeaderField объекты.

Это свойство используется только авторами подкласса. MATLAB устанавливает это свойство перед вызовом complete провайдера способ. Для сообщений, не состоящих из нескольких частей, MATLAB инициализирует это свойство к содержимому Request.Header, минус любой matlab.net.http.field.GenericFields или пустые поля. The ContentProvider использует это свойство для добавления полей заголовка, которые описывают данные, которые будут отправлены, или для добавления параметров к полям заголовка, уже содержащимся в сообщении. В делегате на MultipartProviderMATLAB инициализирует это свойство в поля заголовка, которые делегирующий провайдер намеревается вставить для детали. Делегаты могут изменять или изменять эти поля.

По возвращении с complete провайдера MATLAB считывает это свойство и объединяет его содержимое в заголовок Request. Поля в этой Header с Names которые еще не появляются в Request.Header добавляются в конец Request.Header. Если поле в этой Header имеет Name то же самое, что и один в Request.Headerи оба имеют непустые Values, затем:

  • Если тот, что в Request.Header является GenericField, затем игнорируйте ту, в Header.

  • Если тот, что в Request.Header не является GenericField, затем замените его на Header.

Если один или оба из них имеют пустое Value, затем поле удаляется из Request.Header и он не добавляется как часть нормального завершения сообщения.

Если это делегат MultipartProvider, затем все содержимое этого Header используется в качестве заголовка детали. Multipart делегаты не должны принимать, что Request.Header содержит любые поля, относящиеся к их собственным Header. Поставщик может определить, является ли он делегатом из нескольких частей, проверяя, является ли MyDelegator является MultipartProviderхотя этот тест вряд ли понадобится.

MATLAB читает это свойство только по возврату от вызова complete провайдера способ. Изменения этого массива игнорируются при вызовах MATLAB start.

Авторы классов должны знать, что их подклассы могли добавить поля к этой Header (в своих complete метод) перед вызовом complete в их суперклассе. Лучше всего сохранять такие поля и не добавлять поля с одинаковыми именами. Однако добавление параметра к полю допустимо. Например, суперкласс может добавить параметр charset к существующему полю Content-Type, которое еще не имеет его.

Атрибуты:

GetAccess
public
SetAccess
public

Укажите, следует ли принудительно выполнять кодирование с ограничениями передачи, заданное как логическое. Это свойство представляет интерес только для авторов подкласса и применимо только к провайдерам, которые не являются многопартийными делегатами. Набор подклассов ForceChunked для управления тем, следует ли отправлять содержимое, используя chunked transfer coding. Если false (по умолчанию), MATLAB решает, отправлять ли содержимое измененное, основываясь на том, знает ли он длину содержимого в момент, когда сообщение готово к отправке:

  • Если MATLAB знает длину содержимого (в таком случае, если сообщение содержит поле Content-Length или если это expectedContentLength поставщика метод вернул число), затем MATLAB решает, отправлять ли его chunked или нет.

  • Если MATLAB не знает длину содержимого (нет поля Content-Length в заголовке и expectedContentLength возвращен пустым), затем MATLAB всегда отправляет сообщение с ограничениями.

Если ForceChunked является trueПосле этого MATLAB отправляет сообщение с ограничениями независимо от того, знает ли оно длину содержимого, если только известная длина не меньше размера фрагмента. Если это свойство trueв этом случае сообщение не должно содержать поле Content-Length, поскольку HTTP не позволяет указанному сообщению иметь поле Content-Length. Однако вы все еще можете вернуть ненулевое значение в expectedContentLength метод, если необходимо, чтобы MATLAB проверил, что вы возвращаете ожидаемую длину данных.

Когда MATLAB решает отправить сообщение с куском, размер каждого фрагмента равен длине данных, возвращаемых getData.

MATLAB считывает это значение после вызова complete метод, перед вызовом start. Это поле не задается.

Атрибуты:

GetAccess
public
SetAccess
public

Запрос сообщения для отправки, заданный как matlab.net.http.RequestMessage объект.

Это свойство используется только авторами подкласса. The RequestMessage.send и RequestMessage.complete методы устанавливают это свойство в RequestMessage в чьих Body этот провайдер был размещен перед вызовом любых других методов в этом провайдере и перед добавлением любых дополнительных полей заголовка или проверкой сообщения. Поставщик может просмотреть это сообщение, чтобы увидеть, что содержалось в исходном запросе.

Делегаты видят то же значение для этого свойства, что и делегат. ContentProviders следует знать, что, если они являются делегатами, они не обязательно предоставляют весь текст сообщения запроса, поэтому они не должны считать, что поля заголовка в этом Запросе имеют отношение к данным, которые они предоставляют. Как правило, делегаты должны игнорировать поля заголовка в этом запросе, относящиеся к данным, например, Content-Type.

Если поставщик хочет добавить какие-либо поля заголовка к этому сообщению или изменить существующие таковые, он должен сделать это в своем complete метод путем добавления этих полей к Header свойство. Вызывающий абонент complete (RequestMessage или делегирующий провайдер) определяет, что делать с этими полями. RequestMessage.send и RequestMessage.complete всегда копируйте эти поля в Header от RequestMessage. Делегирующий провайдер может скопировать поля в свою собственную Header свойство или вставить их в сообщение (как в случае MultipartProvider). Для получения дополнительной информации смотрите свойство Header.

Это свойство доступно только для чтения.

Атрибуты:

GetAccesspublic
SetAccessmatlab.net.http.RequestMessage

Защищенные свойства

Подтип поставщика, заданный как строка. Значение по умолчанию "mixed" добавляет набор заголовков Content-Type в "multipart/mixed" к сообщению, плюс соответствующие параметры. Подклассы могут изменить это значение в конструкторе или complete способ. Это значение появляется в типе содержимого после "multipart/".

Атрибуты:

GetAccess
protected
SetAccess
protected

ContentProvider которому делегирует этот провайдер, задается как matlab.net.http.io.ContentProvider объект. Это свойство устанавливается в вызывающем провайдере (делегаторе) delegateTo метод для указания текущего делегированного поставщика. Если текущего делегирования нет, значение пустое.

The complete методы задают пустое свойство.

Атрибуты:

GetAccess
protected
SetAccess
protected

ContentProvider делегированный этому провайдеру, заданный как matlab.net.http.io.ContentProvider объект.

Если a ContentProvider делегирует ответственность за отправку всех или фрагменты данных сообщений другому провайдеру, затем это свойство определяет делегирующего провайдера для делегата. Для примера, a MultipartProvider делегирует части сообщения другим провайдерам, поэтому он вставляет указатель на себя в каждом делегате. В противном случае MyDelegator пуст. The delegateTo метод устанавливает это свойство в делегате.

Атрибуты:

GetAccess
protected
SetAccess
protected

Методы

расширить все

Подробнее о

расширить все

Введенный в R2018a