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에 개발됨
