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

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

ContentProvider, чтобы отправить сообщения multipart/form-data

Описание

Используйте этого провайдера, чтобы отправить многослойную форму в сервер. Многослойная форма является сообщением, содержащим серию частей, где каждая часть имеет "имя элемента управления" и его данные. Данные могут какой-либо иметь типы, допускал 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

общественность

SetAccess

общественность

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

Объект ContentProvider

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

Объект RequestMessage

MultipartProvider отправляет Header и Body RequestMessage как часть. Если свойство Body's Payload установлено, то это используется для необработанной полезной нагрузки. В противном случае свойство Body's 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

общественность

SetAccess

общественность

Зависимый

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

общественность

SetAccess

общественность

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

общественность

SetAccess

общественность

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

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

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

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

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

Атрибуты:

GetAccesspublic
SetAccessmatlab.net.http.RequestMessage

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

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

Атрибуты:

GetAccess

защищенный

SetAccess

защищенный

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

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

Атрибуты:

GetAccess

защищенный

SetAccess

защищенный

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

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

Атрибуты:

GetAccess

защищенный

SetAccess

защищенный

Методы

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

Больше о

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

Введенный в R2018a