Пакет: matlab.net.http.io
Суперклассы: matlab.net.http.io.ContentProvider
ContentProvider для отправки строк MATLAB
Использование StringProvider
объект для отправки MATLAB® строка или вектор символов в RequestMessage
. По умолчанию, если a RequestMessage.Body.Data
свойство содержит строку или вектор символов, затем преобразуется в двоичный в соответствии с кодировкой (charset), заданной или подразумеваемой полем Content-Type в сообщении, поэтому обычно вам не нужно использовать этот объект для отправки простого текста в случаях, когда MATLAB может определить, какую кодировку использовать.
Используйте этот объект в Request.Body
свойство для отправки строки, закодированной с помощью набора графиков, который может отличаться от того, который MATLAB будет использовать для Content-Type в заголовке. Вы задаете этот набор графиков в ContentProvider
конструктор или путем установки Charset
свойство. Если сообщение не содержит Content-Type, этот провайдер добавляет "text/plain"
и заданный набор графиков.
The matlab.net.http.io.StringProvider
класс является handle
класс.
provider = StringProvider
создает StringProvider
для отправки данных в Data
свойство, кодированное значением, заданным в Charset
свойство. Установите эти свойства перед отправкой сообщения, содержащего этот поставщик.
provider = StringProvider(
создает data
,charset
)StringProvider
для отправки указанного data
закодирован с заданным charset
. Конструктор устанавливает Data
свойство значению data
и Charset
свойство значению charset
. The charset
аргумент необязателен.
Data
- Данные для отправкиДанные для отправки, заданные как строковый или символьный вектор. Это значение Данных, которое было предоставлено конструктору. Вы также можете задать это свойство непосредственно, после вызова конструктора или в вашем подклассе.
Авторы подкласса могут задать для этого свойства новые данные в любое время. Следующий вызов для getData
преобразует эти данные, вплоть до значения getData
length
аргумент.
GetAccess | public |
SetAccess | public |
Dependent | true |
Charset
- Набор символов, используемый для кодирования''
(по умолчанию) | вектор символовНабор символов, используемый для кодирования, задается как вектор символов.
GetAccess | public |
SetAccess | public |
Dependent | true |
Header
- Заголовочные поля сообщения или частиmatlab.net.http.HeaderField.empty
(по умолчанию) | matlab.net.http.HeaderField
Поля заголовка сообщения или детали, заданные как вектор одного или нескольких matlab.net.http.HeaderField
объекты.
Это свойство используется только авторами подкласса. MATLAB устанавливает это свойство перед вызовом complete
провайдера способ. Для сообщений, не состоящих из нескольких частей, MATLAB инициализирует это свойство к содержимому
Request.Header
, минус любой matlab.net.http.field.GenericFields
или пустые поля. The 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
используется в качестве заголовка детали. Multipart делегаты не должны принимать, что Request.Header
содержит любые поля, относящиеся к их собственным Header
. Поставщик может определить, является ли он делегатом из нескольких частей, проверяя, является ли MyDelegator
является MultipartProvider
хотя этот тест вряд ли понадобится.
MATLAB читает это свойство только по возврату от вызова complete
провайдера способ. Изменения этого массива игнорируются при вызовах MATLAB
start
.
Авторы классов должны знать, что их подклассы могли добавить поля к этой Header
(в своих complete
метод) перед вызовом complete
в их суперклассе. Лучше всего сохранять такие поля и не добавлять поля с одинаковыми именами. Однако добавление параметра к полю допустимо. Например, суперкласс может добавить параметр charset к существующему полю Content-Type, которое еще не имеет его.
GetAccess | public |
SetAccess | public |
ForceChunked
- Указать, следует ли форсировать кодирование с ограничением передачиfalse
(по умолчанию) | true
Укажите, следует ли принудительно выполнять кодирование с ограничениями передачи, заданное как логическое. Это свойство представляет интерес только для авторов подкласса и применимо только к провайдерам, которые не являются многопартийными делегатами. Набор подклассов 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 |
Request
- Запросить сообщение для отправкиmatlab.net.http.RequestMessage
Запрос сообщения для отправки, заданный как 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.
Это свойство доступно только для чтения.
Атрибуты:
GetAccess | public |
SetAccess | matlab.net.http.RequestMessage |
CurrentDelegate
— ContentProvider
которому делегирует этот провайдерmatlab.net.http.io.ContentProvider
| пустойContentProvider
которому делегирует этот провайдер, задается как matlab.net.http.io.ContentProvider
объект. Это свойство устанавливается в вызывающем провайдере (делегаторе) delegateTo
метод для указания текущего делегированного поставщика. Если текущего делегирования нет, значение пустое.
The complete
методы задают пустое свойство.
GetAccess | protected |
SetAccess | protected |
MyDelegator
— ContentProvider
который делегирован этому провайдеруmatlab.net.http.io.ContentProvider.empty
(по умолчанию) | matlab.net.http.io.ContentProvider
ContentProvider
делегированный этому провайдеру, заданный как matlab.net.http.io.ContentProvider
объект.
Если a ContentProvider
делегирует ответственность за отправку всех или фрагменты данных сообщений другому провайдеру, затем это свойство определяет делегирующего провайдера для делегата. Для примера, a MultipartProvider
делегирует части сообщения другим провайдерам, поэтому он вставляет указатель на себя в каждом делегате. В противном случае MyDelegator
пуст. The delegateTo
метод устанавливает это свойство в делегате.
GetAccess | protected |
SetAccess | protected |
getData | Следующий буфер данных для отправки HTTP запроса сообщения от StringProvider |
Эти методы специализируются на стандартных операторах и функциях MATLAB и наследуемых методах для объектов в этом классе.
string | Информация о поставщике в виде строки |
show | Отображение информации о провайдере |
complete | Заполните заголовок HTTP для StringProvider |
preferredBufferSize | Предпочтительный buffer size для ContentProvider |
expectedContentLength | Длина содержимого ContentProvider |
start | Запуск передачи данных от StringProvider |
restartable | Укажите, перезапускается ли ImageProvider |
reusable | Укажите, можно ли повторно использовать ImageProvider |
delegateTo | Делегирование другому поставщику |
StringProvider
Следующий код подготавливает сообщение, которое отправляет строку "myText"
Использование функции Content-Type "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 параметр charset, который не задал charset, поскольку по умолчанию для "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
Когда поле заголовка Content-Type отсутствует, и набор графиков не задан как 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.