exponenta event banner

matlab.net.http.io.MultipartFormProvider класс

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

ContentProvider для отправки многоточечных сообщений или сообщений данных формы

Описание

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

Некоторые серверы требуют, чтобы в вложенной многопартовой/смешанной части находилось несколько частей под одним именем. Чтобы отправить вложенные части, оберните их в 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);

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

Создание

Описание

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

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

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

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

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

Свойства

развернуть все

Общедоступные свойства

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

Атрибуты:

GetAccess
public
SetAccess
public

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

ContentProvider объект

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

RequestMessage объект

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

MessageBody объект

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 или пустые поля. ContentProvider использует это свойство для добавления полей заголовка, описывающих отправляемые данные, или для добавления параметров в поля заголовка, уже содержащиеся в сообщении. В делегате для MultipartProvider, MATLAB инициализирует это свойство для полей заголовка, которые поставщик делегирования намерен вставить для детали. Делегаты могут изменять или изменять эти поля.

По возвращении от провайдера 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 используется в качестве заголовка части. Многопартийные делегаты не должны предполагать, что Request.Header содержит любые поля, относящиеся к их собственным Header. Поставщик может определить, является ли он многосторонним делегатом, проверив, MyDelegator является MultipartProvider, хотя этот тест вряд ли понадобится.

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

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

Атрибуты:

GetAccess
public
SetAccess
public

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

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

  • Если 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 объект.

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

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

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

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

Атрибуты:

GetAccesspublic
SetAccessmatlab.net.http.RequestMessage

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

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

Атрибуты:

GetAccess
protected
SetAccess
protected

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

complete методы устанавливают это свойство пустым.

Атрибуты:

GetAccess
protected
SetAccess
protected

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

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

Атрибуты:

GetAccess
protected
SetAccess
protected

Методы

развернуть все

Подробнее

развернуть все

Представлен в R2018a