Пакет: matlab.net.http.io
Суперклассы: matlab.net.http.io.ContentProvider
ContentProvider, чтобы отправить строки MATLAB
Используйте объект StringProvider
отправить строку MATLAB® или вектор символов в RequestMessage
. По умолчанию, если свойство RequestMessage.Body.Data
содержит строку или вектор символов, то это преобразовано в двоичный файл согласно кодированию (набор символов), заданный или подразумеваемый полем Content-Type в сообщении, таким образом, вы не должны были бы обычно использовать этот объект отправить простой текст в случаях, где MATLAB может определить что кодирование использовать.
Используйте этот объект в свойстве Request.Body
отправить, строка закодировала использование набора символов, который может отличаться от того, который MATLAB использовал бы для Типа контента в заголовке. Вы указываете что набор символов в конструкторе ContentProvider
или путем установки свойства Charset
. Если сообщение не содержит Типа контента, этот провайдер добавляет одно определение "text/plain"
и заданный набор символов.
Класс matlab.net.http.io.StringProvider
является классом handle
.
provider = StringProvider
создает StringProvider
, чтобы отправить данные в свойстве Data
, закодированном со значением, заданным в свойстве Charset
. Установите эти свойства прежде, чем отправить сообщение, которое содержит этого провайдера.
provider = StringProvider(
создает data
,charset
)StringProvider
, чтобы отправить заданный data
, закодированный с заданным charset
. Конструктор устанавливает свойство Data
на значение data
и свойство Charset
к значению charset
. Аргумент charset
является дополнительным.
Данные
Данные, чтобы отправитьДанные, чтобы отправить, заданный как строка или вектор символов. Это - значение Данных, которые были предоставлены конструктору. Также можно установить это свойство непосредственно после вызова конструктора, или в подклассе.
Авторы подкласса могут установить это свойство на новые данные в любое время. Следующий вызов getData
преобразовывает эти данные до значения
аргумента getData
length
.
GetAccess | общественность |
SetAccess | общественность |
Зависимый | tRUE |
Charset
— Набор символов используется для кодирования''
(значение по умолчанию) | вектор символовНабор символов используется для кодирования, заданный как вектор символов.
GetAccess | общественность |
SetAccess | общественность |
Зависимый | tRUE |
Header
— Header сообщения или частиmatlab.net.http.HeaderField.empty
(значение по умолчанию) | matlab.net.http.HeaderField
Поля заголовка сообщения или части, заданной как вектор одного или нескольких объектов 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
(значение по умолчанию) | true
Укажите, обеспечить ли разделенное на блоки кодирование передачи, заданное как булевская переменная. Это свойство представляет интерес только, чтобы разделить авторов на подклассы и применимо только к провайдерам, которые не являются многослойными делегатами. Подклассы устанавливают 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 | общественность |
Request
— Запросите сообщение отправитьmatlab.net.http.RequestMessage
Запросите сообщение отправить, заданный как объект 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.
Это свойство доступно только для чтения.
Атрибуты:
GetAccess | public |
SetAccess | matlab.net.http.RequestMessage |
CurrentDelegate
— ContentProvider
, к которому этот провайдер делегируетmatlab.net.http.io.ContentProvider
| пустойContentProvider
, к которому этот провайдер делегирует, заданный как объект matlab.net.http.io.ContentProvider
. Это свойство собирается в провайдере вызова (delegator) методом delegateTo
указать на текущего делегированного провайдера. Если нет никакой текущей делегации, то значение пусто.
Методы complete
устанавливают это свойство опустеть.
GetAccess | защищенный |
SetAccess | защищенный |
MyDelegator
— ContentProvider
, который делегировал к этому провайдеруmatlab.net.http.io.ContentProvider.empty
(значение по умолчанию) | matlab.net.http.io.ContentProvider
ContentProvider
, который делегировал к этому провайдеру, заданному как объект matlab.net.http.io.ContentProvider
.
Если ContentProvider
делегирует ответственность за отправку всех или фрагмента данных о сообщении к другому провайдеру, то это свойство идентифицирует провайдера делегирования делегату. Например, MultipartProvider
делегирует части сообщения к другим провайдерам, таким образом, это вставляет указатель на себя в каждом делегате. В противном случае MyDelegator
пуст. Метод delegateTo
устанавливает это свойство в делегате.
GetAccess | защищенный |
SetAccess | защищенный |
getData | Следующий буфер данных, который отправит в HTTP, запрашивает сообщение от StringProvider |
Эти методы специализируют стандартные операторы MATLAB и функции и унаследованные методы для объектов в этом классе.
string | Информация о провайдере как строка |
show | Отобразите информацию о провайдере |
complete | Полный HTTP-заголовок для StringProvider |
preferredBufferSize | Предпочтительный buffer size для ContentProvider |
expectedContentLength | Длина содержимого ContentProvider |
start | Запустите передачу данных с StringProvider |
restartable | Укажите, является ли ImageProvider прерываемым |
reusable | Укажите, является ли ImageProvider допускающим повторное использование |
delegateTo | Делегируйте к другому провайдеру |
StringProvider
Следующий код готовит сообщение, которое отправляет строке "myText"
с помощью Типа контента "text/plain"
для сервера с помощью кодирования Shift_JIS:
ctf = ContentTypeField(MediaType('text/plain','charset','Shift_JIS'); r = RequestMessage('put',ctf,StringProvider('myText'));
В этом примере заголовок не имеет никакого поля Content-Type, таким образом, StringProvider
вставляет один на основе аргументов конструктора.
r = RequestMessage('put',[],StringProvider('myText','Shift_JIS')); show(r.complete('www.someurl.com'))
PUT / HTTP/1.1 Host: www.someurl.com Content-Type: text/plain; charset=Shift_JIS User-Agent: MATLAB/9.2.0.512567 (R2017b) Connection: close Date: Fri, 20 Jun 2017 14:26:42 GMT
В этом примере набор символов, заданный конструктору StringProvider
, используемому, чтобы преобразовать данные, отличается от набора символов в поле Content-Type. StringProvider
не изменяет существующее поле Content-Type, которое уже задает набор символов, таким образом, сервер принимает, что данными является US-ASCII, не Shift JIS.
ctf = ContentTypeField(MediaType('text/plain','charset','US-ASCII')); r = RequestMessage('put',ctf,StringProvider('myText','Shift_JIS'));
В этом примере MATLAB добавляет параметр набора символов в поле Content-Type, которое не задавало набор символов, потому что значением по умолчанию для "application/json"
является UTF-8, который отличается от Shift_JIS.
ctf = ContentTypeField(MediaType('application/json')); r = RequestMessage('put',ctf,StringProvider('myText','Shift_JIS')); show(r.complete('www.someurl.com'))
PUT / HTTP/1.1 Host: www.someurl.com Content-Type: application/json; charset=Shift_JIS User-Agent: MATLAB/9.2.0.512567 (R2017b) Connection: close Date: Fri, 20 Jun 2017 14:26:42 GMT
Когда нет никакого поля заголовка Типа контента, и никакой набор символов не задан к StringProvider
, MATLAB использует эвристику, чтобы найти "минимальное" кодирование, которое может представлять данные, одни из которых включают кодировку по умолчанию для платформы. В этом примере, когда работавший Windows, символы Unicode® в строке в области значений Windows 1252, но вне области значений US-ASCII, таким образом, Windows 1252 используется:
r = RequestMessage('put',[],StringProvider('€abc')); show(r.complete('www.someurl.com'))
PUT / HTTP/1.1 Host: www.someurl.com Content-Type: text/plain; charset=windows-1252 User-Agent: MATLAB/9.2.0.512567 (R2017b) Connection: close Date: Fri, 20 Jun 2017 14:26:42 GMT
В этом случае поле Content-Type задает "application/json"
без набора символов, и ни один не задан к StringProvider
. Поскольку набор символов по умолчанию для "application/json"
является UTF-8, использованием StringProvider
, что преобразовать и не задает набор символов явным образом в поле Content-Type.
ctf = ContentTypeField(MediaType('application/json')); r = RequestMessage('put',ctf,StringProvider('myText')); % uses UTF-8
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.