matlab.net.http.io.StringProvider 클래스
패키지: matlab.net.http.io
슈퍼클래스: matlab.net.http.io.ContentProvider
MATLAB 문자열을 전송할 ContentProvider
설명
StringProvider
객체를 사용하여 RequestMessage
에서 MATLAB® string형이나 문자형 벡터를 전송합니다. 기본적으로 RequestMessage.Body.Data
속성이 string형이나 문자형 벡터를 포함하면 메시지의 Content-Type 필드에 의해 지정되거나 유추되는 인코딩(문자 집합)에 따라 이진 데이터로 변환되므로, MATLAB이 어떤 인코딩을 사용해야 하는지 확인할 수 있는 경우에는 일반 텍스트를 전송하기 위해 이 객체를 사용할 필요가 없습니다.
MATLAB이 헤더의 Content-Type에 대해 사용하는 문자 집합과 다른 문자 집합을 사용하여 인코딩된 문자열을 전송할 때 Request.Body
속성에서 이 객체를 사용하십시오. 해당 문자 집합은 ContentProvider
생성자에 지정할 수도 있고, Charset
속성을 설정하여 지정할 수도 있습니다. 메시지에 Content-Type이 없는 경우, 이 제공자는 이 필드를 추가하여 "text/plain"
과 지정된 문자 집합을 지정합니다.
matlab.net.http.io.StringProvider
클래스는 handle
클래스입니다.
생성
설명
provider = StringProvider
는 Charset
속성에 지정된 값으로 인코딩된 Data
속성의 데이터를 전송할 StringProvider
를 생성합니다. 이 제공자를 포함하는 메시지를 전송하기 전에 먼저 이 속성들을 설정하십시오.
provider = StringProvider(
는 지정된 data
,charset
)charset
로 인코딩된 지정된 data
를 전송할 StringProvider
를 생성합니다. 이 생성자는 Data
속성을 data
의 값으로 설정하고, Charset
속성을 charset
의 값으로 설정합니다. charset
인수는 선택 사항입니다.
속성
퍼블릭 속성
Data
— 전송할 데이터
string형 | 문자형 벡터
전송할 데이터로, string형이나 문자형 벡터로 지정됩니다. 생성자에게 제공된 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
메서드를 호출하기 전에 먼저 이 속성을 설정합니다. multipart가 아닌 메시지의 경우, MATLAB은 Request.Header
의 내용에서 matlab.net.http.field.GenericFields
나 값이 비어 있는 필드를 제외한 값으로 이 속성을 초기화합니다. ContentProvider
는 이 속성을 사용하여 전송할 데이터를 설명하는 헤더 필드를 추가하거나 이미 메시지에 있는 헤더 필드에 파라미터를 추가합니다. MultipartProvider
의 대리자에서, 위임하는 제공자가 해당 파트에 대해 삽입하고자 하는 헤더 필드로 MATLAB은 이 속성을 초기화합니다. 대리자는 이러한 필드를 수정하거나 변경할 수 있습니다.
제공자의 complete
메서드에서 반환되면 multipart 메시지가 아닌 경우 MATLAB은 이 속성을 읽어 해당 내용을 Request
의 헤더에 병합합니다. 이 Header
의 필드 중에서 Request.Header
에 나타나지 않은 Names
를 갖는 필드는 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
인지 보고 multipart 여부를 확인할 수 있지만, 이런 테스트가 필요한 경우는 드뭅니다.
MATLAB은 제공자의 complete
메서드 호출 후 반환된 경우에만 이 속성을 읽어 들입니다. MATLAB이 start
를 호출하면 이 배열의 변경 사항은 무시됩니다.
클래스 작성자는 슈퍼클래스에서 complete
를 호출하기 전에 서브클래스가 이 Header
에(서브클래스의 complete
메서드에) 필드를 추가했을 수 있다는 사실에 유의해야 합니다. 이러한 필드를 그대로 유지하고 같은 이름을 갖는 필드를 추가하지 않는 것이 좋습니다. 단, 필드에 파라미터를 추가하는 것은 허용됩니다. 예를 들어, 슈퍼클래스는 문자 집합 파라미터를 갖지 않는 기존 Content-Type 필드에 문자 집합 파라미터를 추가할 수 있습니다.
특성:
GetAccess | public |
SetAccess | public |
ForceChunked
— 청크 형식의 전송 코딩을 강제할지 여부를 나타내는 표시
false
(디폴트 값) | true
청크 형식의 전송 코딩을 강제할지 여부를 나타내는 표시로, 부울로 지정됩니다. 이 속성은 서브클래스 작성자에게만 사용하며, multipart 대리자가 아닌 제공자에게만 적용됩니다. 서브클래스는 ForceChunked
를 설정하여 청크 형식의 전송 코딩을 사용하여 내용을 전송할지 여부를 제어합니다. false
(디폴트 값)인 경우, MATLAB은 메시지의 전송 준비가 완료된 시점에 콘텐츠 길이를 알고 있는지에 따라 청크 형식으로 콘텐츠를 전송할지 여부를 결정합니다.
MATLAB이 콘텐츠 길이를 알고 있는 경우(메시지가 Content-Length 필드를 포함하거나 이 제공자의
expectedContentLength
메서드가 숫자를 반환한 경우), MATLAB은 청크 형식으로 콘텐츠를 전송할지 여부를 결정합니다.MATLAB이 콘텐츠 길이를 알지 못하는 경우(헤더에 Content-Length 필드가 없고
expectedContentLength
가 비어 있는 값을 반환한 경우), MATLAB은 항상 청크 형식으로 메시지를 전송합니다.
ForceChunked
가 true
이면 MATLAB은 알려진 길이가 청크 크기보다 작은 경우를 제외하고 콘텐츠 길이를 알고 있는지에 관계없이 청크 형식으로 메시지를 전송합니다. HTTP는 청크 형식 메시지가 Content-Length 필드를 갖는 것을 허용하지 않으므로 이 속성이 true
인 경우 메시지가 Content-Length 필드를 포함하면 안 됩니다. 단, 사용자가 예상 데이터 길이를 반환하는지 MATLAB이 확인하기를 원하는 경우에는 expectedContentLength
메서드에서 여전히 0이 아닌 값을 반환할 수 있습니다.
MATLAB이 청크 형식 메시지를 전송하기로 결정한 경우, 각 청크의 크기는 getData
가 반환한 데이터의 길이와 동일합니다.
MATLAB은 complete
메서드를 호출한 다음 start
를 호출하기 전에 이 값을 읽어 들입니다. 이때, 이 필드를 설정하지는 않습니다.
특성:
GetAccess | public |
SetAccess | public |
Request
— 전송할 요청 메시지
matlab.net.http.RequestMessage
전송할 요청 메시지로, matlab.net.http.RequestMessage
객체로 지정됩니다.
서브클래스 작성자만 이 속성을 사용합니다. RequestMessage.send
메서드와 RequestMessage.complete
메서드는 이 제공자의 다른 메서드를 호출하기 전에, 그리고 추가 헤더 필드를 추가하거나 메시지의 유효성을 검사하기 전에 Body
에 이 제공자가 배치된 RequestMessage
에 이 속성을 설정합니다. 제공자는 이 메시지를 검토해 원본 요청에 어떤 데이터가 포함되었는지 확인할 수 있습니다.
대리자에게 표시되는 이 속성의 값은 위임 주체에게 표시되는 값과 동일합니다. ContentProviders
는 자신이 대리자인 경우 요청 메시지의 본문 중 일부만 제공할 수도 있으므로 이 요청의 헤더 필드가 자신이 제공하는 데이터와 관련이 있다고 간주하면 안 됩니다. 일반적으로 대리자는 이 요청의 헤더 필드 중에서 Content-Type과 같이 데이터와 관련 있는 필드를 무시해야 합니다.
제공자가 이 메시지에 헤더 필드를 추가하거나 기존 헤더 필드를 수정하려는 경우, complete
메서드에서 이러한 필드를 Header
속성에 추가해야 합니다. complete
의 호출자(RequestMessage
또는 위임하는 제공자)는 이러한 필드를 어떻게 처리할지 결정합니다. RequestMessage.send
와 RequestMessage.complete
는 항상 이러한 필드를 RequestMessage
의 Header
로 복사합니다. 위임하는 제공자는 이러한 필드를 자신의 Header
속성에 복사하거나 (MultipartProvider
의 경우와 같이) 메시지에 삽입할 수 있습니다. 자세한 내용은 Header 속성을 참조하십시오.
이 속성은 읽기 전용입니다.
특성:
GetAccess | public |
SetAccess | matlab.net.http.RequestMessage |
보호 속성
CurrentDelegate
— 이 제공자가 위임하는 ContentProvider
matlab.net.http.io.ContentProvider
| 비어 있음
이 제공자가 위임하는 ContentProvider
로, matlab.net.http.io.ContentProvider
객체로 지정됩니다. 이 속성은 호출하는 제공자(위임 주체)가 delegateTo
메서드에서 설정하며, 현재 위임된 제공자를 나타냅니다. 현재 위임이 없는 경우, 이 값은 비어 있습니다.
complete
메서드는 이 속성을 비어 있는 값으로 설정합니다.
특성:
GetAccess | protected |
SetAccess | protected |
MyDelegator
— 이 제공자에게 위임된 ContentProvider
matlab.net.http.io.ContentProvider.empty
(디폴트 값) | matlab.net.http.io.ContentProvider
이 제공자에게 위임된 ContentProvider
로, matlab.net.http.io.ContentProvider
객체로 지정됩니다.
ContentProvider
가 메시지 데이터의 일부 또는 전부를 전송하는 작업에 대한 책임을 다른 제공자에게 위임한 경우, 이 속성은 대리자에게 위임한 제공자를 식별합니다. 예를 들어, MultipartProvider
는 메시지의 여러 파트를 다른 제공자들에게 위임하므로, 자신에 대한 핸들을 각 대리자에 삽입합니다. 그러지 않으면 MyDelegator
는 비어 있습니다. delegateTo
메서드는 대리자에 이 속성을 설정합니다.
특성:
GetAccess | protected |
SetAccess | protected |
메서드
퍼블릭 메서드
getData | StringProvider로부터 HTTP 요청 메시지에 포함하여 다음 데이터 버퍼 |
특화된 연산자와 함수
다음 메서드는 표준 MATLAB 연산자 및 함수와 상속된 메서드를 이 클래스의 객체를 위해 특화합니다.
string | 제공자 정보를 string형으로 반환합니다. |
show | 제공자 정보를 표시합니다. |
보호 메서드
complete | StringProvider에 대한 HTTP 헤더 완성 |
preferredBufferSize | ContentProvider의 기본 설정 버퍼 크기 |
expectedContentLength | ContentProvider의 콘텐츠 길이 |
start | StringProvider로부터 데이터 전송 시작 |
restartable | ImageProvider의 재시작 가능 여부 표시 |
reusable | ImageProvider의 재사용 가능 여부 표시 |
delegateTo | 다른 제공자에게 위임 |
예제
StringProvider
사용하기
다음 코드에서는 Content-Type "text/plain"
을 사용하는 문자열 "myText"
를 Shift_JIS 인코딩을 사용하는 서버로 전송하는 메시지를 준비합니다.
ctf = ContentTypeField(MediaType('text/plain','charset','Shift_JIS'); r = RequestMessage('put',ctf,StringProvider('myText'));
이 예제에서 헤더에 Content-Type 필드가 없으므로 StringProvider
가 생성자 인수에 따라 Content-Type 필드를 삽입합니다.
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 필드를 변경하지 않으므로, 서버는 데이터가 Shift-JIS가 아니라 US-ASCII라고 간주합니다.
ctf = ContentTypeField(MediaType('text/plain','charset','US-ASCII')); r = RequestMessage('put',ctf,StringProvider('myText','Shift_JIS'));
이 예제에서는 "application/json"
의 디폴트 값이 Shift_JIS와는 다른 UTF-8이므로 MATLAB은 문자 집합을 지정하지 않는 Content-Type 필드에 문자 집합 파라미터를 추가합니다.
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
는 UTF-8을 사용하여 변환을 수행하며, Content-Type 필드에 명시적으로 문자 집합을 지정하지 않습니다.
ctf = ContentTypeField(MediaType('application/json')); r = RequestMessage('put',ctf,StringProvider('myText')); % uses UTF-8
세부 정보
클래스 계층 구조
버전 내역
R2018a에 개발됨
참고 항목
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)