matlab.net.http.io.MultipartConsumer 클래스
패키지: matlab.net.http.io
슈퍼클래스: matlab.net.http.io.GenericConsumer
HTTP 메시지 내 multipart 콘텐츠 유형에 대한 헬퍼
설명
이 소비자는 multipart HTTP 응답 메시지를 처리합니다. multipart 메시지는 Content-Type 헤더 필드가 "multipart"
로 지정되어 있고 본문이 하나 이상의 파트로 구성된 메시지입니다. 각 파트는 해당 파트를 설명하는 자체 헤더 필드 세트를 갖고 있으며, 그중에서 Content-Type 필드가 가장 중요합니다.
matlab.net.http.io.MultipartConsumer
클래스는 handle
클래스입니다.
서브클래스 작성자
자신만의 ContentConsumer
를 작성하는 경우, 최상위 소비자이든(RequestMessage.send
메서드의 3번째 인수로 지정됨) multipart 메시지의 파트이든(MultipartConsumer
생성자 호출 시 "delegate"로 지정된 경우) 일반적으로 무리 없이 작동합니다. MultipartConsumer
는 실제로는 결과를 ResponseMessages
의 배열로 조합해 반환된 response.Body.Data
속성에 저장하지만, 각 대리자에게는 MultipartConsumer가 마치 전체 응답 메시지를 처리하는 것처럼 보입니다.
다음은 MultipartConsumer
동작에 대한 설명입니다.
이 MultipartConsumer
는 서버로부터 메시지의 온전한 한 파트를 수신할 때마다 해당 파트의 헤더를 구문 분석한 다음 해당 파트의 Content-Type 필드에 적절한 대리 소비자를 호출합니다. 해당 파트에 Content-Type 필드가 없으면 text/plain
유형이라고 간주합니다. 해당 유형을 처리할 수 있는 대리자가 없는 경우, GenericConsumer
에 대해 설명된 대로 Content-Type에 따라 해당 파트에 대한 디폴트 처리를 사용하여 처리합니다.
MultipartConsumer
는 한 파트를 온전히 수신하기 전까지는 대리자를 호출하지 않습니다. MultipartConsumer
는 한 파트가 완전히 수신될 때까지 데이터를 버퍼링하고, 해당 파트의 수신이 끝나면 ContentConsumer
의 표시된 모든 속성을 이 소비자로부터 대리자에게 복사한 다음 대리자의 Response.Body
를 지우고, 대리자의 Header
를 해당 파트의 헤더로 설정하고, 대리자의 initialize
메서드와 start
메서드를 호출한 다음, 해당 파트의 페이로드를 포함하여 대리자의 putData
메서드를 한 번 이상 호출하고, 그런 다음 데이터의 끝을 나타내기 위해 putData(uint8.empty)
를 호출합니다. 대리자의 initialize
메서드가 해당 파트를 처리하기 원치 않음을 나타내는 false
를 반환하면 해당 파트의 페이로드는 GenericConsumer
에 대해 설명된 대로 Content-Type에 따라 해당 파트에 대한 디폴트 동작을 사용하여 처리됩니다.
대리자의 start
메서드가 원하는 최대 버퍼 크기가 없음을 나타내는 []
을 반환하면 MultipartConsumer
는 해당 파트에 대한 전체 페이로드를 제공하는 putData
를 단 한 번 호출한 후, 데이터의 끝을 나타내기 위한 메서드를 호출합니다. 그 밖의 경우에는 전체 페이로드를 버퍼 크기 단위로 전송하는 데 필요한 횟수만큼 putData
를 호출합니다.
대리자의 putData
메서드가 더 이상 데이터를 원치 않음을 나타내기 위해 STOP
반환 값을 true
로 설정하면 MultipartConsumer
는 마치 메시지가 종료된 것처럼 연결을 닫아 전송을 중단합니다. 대리자는 이러한 방식으로 원본 메시지의 나머지를 처리할지 여부를 제어합니다. putData
가 []
값의 SIZE
를 반환하는 경우에도 메시지가 종료되지만, 이 경우 RequestMessage.send
의 호출자에게 예외가 발생됩니다.
특정 파트의 소비자가 ContentConsumer
인스턴스가 아닌 함수 핸들로 지정된 경우, 이 함수는 소비자가 필요한 처음 한 번만 호출되고, 이후 동일한 응답 메시지의 해당하는 파트에 대해서는 동일한 소비자 인스턴스가 사용됩니다. 함수 핸들에 의해 처리되는 파트의 경우, 함수가 ResponseMessage
본문에 대한 액세스 권한이 없으므로 Response.Body.Data
의 해당 ResponseMessage
는 해당 파트의 헤더만 포함합니다.
대리 소비자는 MyDelegator
속성을 사용하여 이 소비자와 그 속성에 액세스할 수 있지만, 그래야 할 경우는 매우 드뭅니다.
생성
설명
입력 인수
속성
메서드
세부 정보
버전 내역
R2018a에 개발됨