matlab.net.http.io.ContentConsumer 클래스
네임스페이스: matlab.net.http.io
슈퍼클래스: handle
, matlab.mixin.Heterogeneous
HTTP 메시지 페이로드의 소비자
설명
ContentConsumer는 HTTP ResponseMessage
객체에서 수신된 데이터를 변환하거나 처리하는 객체입니다. MATLAB®은 응답 메시지 수신 중에 페이로드로 구성된 버퍼를 처리하기 위해 소비자를 반복적으로 호출합니다. 사용자는 스트리밍된 데이터가 수신되는 동안 해당 데이터를 처리하거나 표시할 수 있습니다. 전체 메시지를 수신하기 전에 전송을 중단할 수도 있습니다. 데이터 처리에 걸리는 시간이 네트워크 속도에 비례하는 경우, 소비자를 사용하면 대기 시간(명령 수신과 데이터 전송 시작 사이의 지연 시간)을 줄일 수 있습니다. 또한 비유계 스트리밍된 응답 메시지를 수신할 수도 있습니다.
ContentConsumer
는 추상 클래스입니다. HTTP 응답 메시지에서 수신되는 수신 데이터를 처리하려면 다음과 같은 ContentConsumer
서브클래스 중 하나를 사용하십시오.
ContentConsumer
클래스의 서브클래스를 자체적으로 작성할 수도 있고, 서브클래스 중 하나를 확장할 수도 있습니다.
matlab.net.http.io.ContentConsumer
클래스는 handle
클래스입니다.
속성
퍼블릭 속성
ContentLength
— 페이로드의 예상 길이
uint64
| 비어 있음
페이로드의 예상 길이로, uint64
로 지정됩니다. 이 속성은 일반적으로 Header
속성의 matlab.net.http.field.ContentLengthField
의 Value
속성입니다.
ContentLength
가 비어 있다면 길이를 알 수 없다는 의미입니다. putData(uint8.empty)
가 호출되면 페이로드가 종료됩니다.
MATLAB은 데이터의 길이를 알면 좋은 서브클래스에 대해 편의를 위해 initialize
를 호출하기 전에 먼저 이 속성을 설정합니다.
이 ContentConsumer
가 최상위 소비자의 대리자인 경우, ContentLength
의 값이 최상위 소비자의 ContentLength
값과 다를 수 있습니다.
예: someData
의 type이 uint8
인 numel(someData)
특성:
GetAccess | public |
SetAccess | public |
ContentType
— 페이로드의 미디어 형식
matlab.net.http.MediaType
| 비어 있음
페이로드의 미디어 형식으로, matlab.net.http.MediaType
객체로 지정됩니다. 이 속성은 일반적으로 Header
속성의 matlab.net.http.field.ContentTypeField
의 Value
속성입니다. ContentType
속성이 비어 있으면 ContentTypeField
가 비어 있거나 존재하지 않는 것입니다.
MATLAB은 MediaType
을 검토하고자 하는 서브클래스에 대해 편의를 위해 initialize
를 호출하기 전에 먼저 이 속성을 설정합니다. 서브클래스가 데이터를 보고 데이터가 다른 MediaType
이라고 판단하는 경우에는 이 속성을 설정할 수 있습니다.
전송이 끝나면 MATLAB이 이 값을 Response.Body.ContentType
속성에 복사합니다.
예: 'application/octet-stream'
특성:
GetAccess | public |
SetAccess | public |
URI
— 처리되고 있는 요청의 대상
matlab.net.URI
처리되고 있는 요청의 대상으로, matlab.net.URI
객체로 지정됩니다. 이 값은 send
에 의해 결정된 원본 대상 URI입니다. 리디렉션이 이루어진 뒤의 프록시 URI나 최종 URI가 아닙니다.
MATLAB은 서브클래스의 편의를 위해 initialize
를 호출하기 전에 먼저 이 속성을 설정합니다.
특성:
GetAccess | public |
SetAccess | public |
Request
— 전송된 완전한 RequestMessage
matlab.net.http.RequestMessage
전송된 완전한 RequestMessage
로, matlab.net.http.RequestMessage
객체로 지정됩니다. 모든 리디렉션이 끝난 뒤의 최종 RequestMessage
이자 send
메서드의 completedrequest
반환 값입니다.
MATLAB은 서브클래스의 편의를 위해 initialize
를 호출하기 전에 먼저 이 속성을 설정합니다.
특성:
GetAccess | public |
SetAccess | public |
Response
— 처리되고 있는 ResponseMessage
matlab.net.http.ResponseMessage
처리되고 있는 ResponseMessage
로, matlab.net.http.ResponseMessage
객체로 지정됩니다.
MATLAB은 initialize
를 호출하기 전에 먼저 Response
속성을 설정합니다. 이 값은 헤더 수신 이후이고 페이로드 수신 이전의 ResponseMessage
입니다. 응답 메시지의 처리가 시작될 때(또는 multipart 메시지 중 한 파트의 시작 부분에서), ResponseMesssage.Body
속성은 Data
속성과 Payload
속성이 비어 있는 MessageBody
객체입니다. 소비자는 수신된 데이터를 저장하기 위해 데이터 전송 중에 Response
속성과 MessageBody.Data
속성을 수정할 수 있습니다. 일반적으로 데이터를 처리하고 저장하는 소비자는 Response.Body.Data
를 처리된 페이로드로 설정하지만, 이는 필수적인 것은 아닙니다. 전송이 완료되면 MATLAB은 이 Response
를 send
의 호출자에게 반환합니다. Header
나 StatusLine
같은 다른 Response
속성을 변경하면 send
의 호출자에게 반환되기 때문에 소비자는 이러한 속성을 수정하면 안 됩니다.
Response.Body.Payload
속성은 전송 중에 비어 있으며, 소비자가 이를 수정하려고 시도하면 안 됩니다. HTTPOptions.SavePayload
속성이 설정된 경우, MATLAB은 메시지 또는 파트의 전송이 종료되었을 때(putData(uint8.empty)
에 대한 호출 후) 또는 예외가 발생했을 때 Payload
를 수신된 페이로드로 설정합니다.
메시지 처리 중에 소비자에 예외가 발생한 경우, MATLAB은 HTTPException
객체를 발생시킵니다. History
속성은 이 Response
값을 포함합니다.
소비자가 multipart 메시지의 한 파트를 처리하고 있는 대리자인 경우, Response.Header
는 전체 메시지의 헤더를 포함하고, 각 파트의 ContentConsumer
가 호출되기 전에 Response.Body
의 Payload
속성과 Data
속성이 지워집니다. 각 파트가 완료되면 원본 응답의 Body.Data
에 들어 있는 ResponseMessage
객체로 구성된 배열의 끝에 이 객체의 Header
와 이 속성의 Body
를 포함하는 새 ResponseMessage
가 추가됩니다. 다음 대리자는 이전 대리자의 MessageBody
가 아닌 빈 MessageBody
를 포함하는 새 Response
를 가지게 됩니다.
특성:
GetAccess | public |
SetAccess | public |
Dependent | true |
Header
— 현재 처리되고 있는 페이로드의 헤더
matlab.net.http.HeaderField
현재 처리되고 있는 페이로드의 헤더로, matlab.net.http.HeaderField
객체로 지정됩니다.
소비자는 전송받고 있는 페이로드를 처리할 방법을 결정할 때 이 헤더를 사용합니다. 최상위 소비자의 경우, 이 값은 Response.Header
와 동일합니다. 대리자의 경우에는 이 값이 다를 수 있습니다. 예를 들어, MultipartConsumer
가 처리하는 multipart 메시지에서 이 값은 이 대리자가 처리하는 파트의 헤더가 됩니다. 대리자는 여전히 원본 메시지의 헤더를 Response.Header
에서 검토할 수 있습니다.
MATLAB은 서브클래스의 편의를 위해 initialize
를 호출하기 전에 먼저 이 속성을 설정합니다.
특성:
GetAccess | public |
SetAccess | public |
보호 속성
CurrentLength
— 현재 Response.Body.Data
에 있는 데이터의 길이
uint64.empty
(디폴트 값) | uint64
현재 Response.Body.Data
속성에 있는 데이터의 길이로, uint64
로 지정됩니다.
이 속성은 Response.Body.Data
가 현재 저장된 실제 데이터보다 큰 크기로 사전할당된 경우 저장된 데이터의 길이를 나타내기 위해 사용됩니다. 이 속성이 비어 있으면 Response.Body.Data
전체에 저장된 데이터를 포함하고 있거나 특정 ContentConsumer
서브클래스가 데이터를 Response.Body.Data
에 저장하는 것 이외의 방법으로 데이터를 삭제하고 있음을 의미합니다.
이 속성은 AppendFcn
속성이 비어 있으면 이 기본 클래스의 putData
메서드에 의해 사용되고 설정됩니다. 이는 putData
를 호출하며, 이미 저장되어 있는 데이터 및/또는 Response.Body.Data
에서 결과를 유지하는 AppendFcn
의 구현을 검토하는 서브클래스를 위한 것입니다.
putData
를 사용하는 서브클래스는 이 속성을 사용하여 데이터가 저장되어 있는 버퍼의 위치를 재설정할 수도 있습니다. 예를 들어, 디폴트 AppendFcn
함수가 사용된 경우, putData
호출 시마다 Response.Body.Data
전체를 처리하는 서브클래스는 더 이상 원본 데이터가 필요하지 않으므로, 다음번 putData
호출 시 버퍼를 새 데이터로 덮어쓰도록 CurrentLength
속성을 1로 재설정할 수 있습니다. 버퍼에서 새 데이터 끝을 지나 존재하는 요소는 지울 필요가 없습니다.
putData
를 호출하지 않는 서브클래스는 이 속성을 사용하여 자체 데이터를 추적하거나 설정하지 않은 상태로(빈 상태로) 둘 수 있습니다. MATLAB은 여기에 설정될 수 있는 값에 제약을 두지 않으며, 디폴트 AppendFcn
이 다음 데이터 버퍼를 저장할 장소와 메시지 끝에서 잘라낼 데이터의 부분을 결정하는 용도 이외로는 이 속성을 사용하지 않습니다. putData(uint8.empty)
를 마지막으로 호출하기 전에 이 속성을 빈 값으로 설정하면 데이터 잘림을 방지할 수 있습니다.
MATLAB은 매번 initialize
를 호출하기 전에 이 속성을 빈 값으로 설정합니다.
특성:
GetAccess | protected |
SetAccess | protected |
CurrentDelegate
— 이 소비자가 위임하는 대상 ContentConsumer
matlab.net.http.io.ContentConsumer
| []
이 소비자가 위임하는 대상 ContentConsumer
로, matlab.net.http.io.ContentConsumer
객체로 지정됩니다. 호출하는 소비자(위임 주체)의 delegateTo
메서드가 CurrentDelegate
속성을 설정합니다. 현재 위임이 없는 경우, 이 값은 []
이 됩니다.
MATLAB은 initialize
를 호출하기 전에 CurrentDelegate
를 []
로 설정합니다.
특성:
GetAccess | protected |
SetAccess | protected |
MyDelegator
— 이 소비자에게 위임된 ContentConsumer
matlab.net.http.io.ContentConsumer
| 비어 있음
이 소비자에게 위임된 ContentConsumer
로, matlab.net.http.io.ContentConsumer
객체로 지정됩니다. 이 소비자가 다른 소비자(예: GenericConsumer
또는 MultipartConsumer
)가 호출한 대리자인 경우, 이 소비자는 호출하는 소비자가 됩니다. send
호출 시 지정된 최상위 소비자에서는 빈 값입니다.
예를 들어 자신에게 어떤 소비자가 위임되었는지 확인하기 위한 목적으로, 대리자는 이 속성을 사용하여 위임 주체의 속성에 액세스할 수 있습니다.
특성:
GetAccess | protected |
SetAccess | protected |
AppendFcn
— 데이터를 더 추가하기 위해 putData
가 호출하는 함수
함수 핸들
함수로, 데이터를 더 추가하기 위해 putData
메서드가 호출하는 함수의 함수 핸들로 지정됩니다. 이 클래스의 putData
메서드는 data
인수에서 수신하는 데이터를 응답 메시지의 기존 데이터에 추가하기 위해 AppendFcn
함수를 호출합니다. 이 함수는 다음과 같은 시그니처를 가져야 합니다.
AppendFcn(consumer,newdata)
여기서 newdata
는 consumer.Response.Body.Data
의 배열에 추가될 데이터입니다. 이 메서드는 Data
의 새 길이를 반영하도록 consumer.CurrentLength
를 업데이트하는 역할을 담당합니다. newdata
가 비어 있다는 것은 스트림이 끝났다는 것을 나타내는데, 이 경우 이 함수는 Response.Body.Data
를 최종 값으로 업데이트해야 합니다.
이 속성이 비어 있으면 디폴트 동작은 내부 함수를 사용하여 Data
를 horzcat
함수를 지원하는 임의 값으로 구성된 배열로 처리합니다. 공간을 사전할당하여 newdata
를 효율적으로 추가하며, CurrentLength
가 저장되는 데이터의 실제 길이가 되도록 유지합니다. 메시지의 끝에서 Response.Body.Data
를 CurrentLength
에 맞게 잘라냅니다.
이 추가하는 절차에 horzcat
이 적절하지 않은 경우 서브클래스가 이 속성을 변경할 수 있습니다. 예를 들어, StringConsumer
가 string형 스칼라를 빌드하면 horzcat
함수 대신 plus
함수를 사용하여 해당 string형에 추가합니다.
데이터 추가를 위해 ContentConsumer.putData
를 호출하지 않거나 데이터를 추가할 때 horzcat
의 동작으로 충족되는 서브클래스는 이 속성을 무시할 수 있습니다.
예: @customAppend
가 소비자에 의해 정의되는 @customAppend
특성:
GetAccess | protected |
SetAccess | protected |
메서드
퍼블릭 메서드
initialize | 새 HTTP 페이로드에 대한 소비자 준비하기 |
start | ContentConsumer로 HTTP 데이터 전송 시작 |
putData | ContentConsumer에 대한 다음 데이터 버퍼 처리 또는 저장 |
delegateTo | 다른 소비자에게 위임 |
세부 정보
최상위 소비자
RequestMessage.send
호출 시 ContentConsumer
를 지정하면 이 소비자는 최상위 소비자가 됩니다. MATLAB은 전체 페이로드를 수신하는 동시에 한 번에 한 버퍼씩 전달합니다. 예를 들면 다음과 같습니다.
req = RequestMessage; resp = req.send(url, [], MyConsumer);
대리자
대리자는 메시지 내 데이터의 전체 또는 일부를 처리하도록 다른 소비자가 호출한 소비자입니다.
다음 코드에서 mp
는 multipart 메시지의 전체 페이로드를 수신하는 최상위 소비자입니다.
mp = MultipartConsumer('image/*', ImageConsumer, 'text/*', StringConsumer); resp = req.send(url, [], mp);
ImageConsumer
객체와 StringConsumer
객체는 페이로드 중에서 이미지 부분과 텍스트 부분만 수신하는 대리 소비자입니다. GenericConsumer
도 대리자를 사용합니다. ContentConsumer
는 일반적으로 자신이 최상위 소비자인지 아니면 대리자인지를 신경 쓰지 않습니다. matlab.net.http.io
네임스페이스의 모든 소비자는 대리자가 될 수 있습니다.
클래스 계층 구조
버전 내역
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)