putData
클래스: matlab.net.http.io.StringConsumer
네임스페이스: matlab.net.http.io
문자열 데이터로 구성된 다음 버퍼를 응답에 추가
구문
[len,stop] = putData(consumer,data)
설명
[
는 Charset의 현재 값을 사용하여 len
,stop
] = putData(consumer
,data
)data
를 Unicode® 문자열로 변환하고 결과를 Response.Body.Data
에 추가합니다. 이 과정에서 현재 변환된 문자열은 Response.Body.Data
에 저장됩니다. TextType 속성이 'char'
이면 CurrenLength
까지의 문자만 유효합니다.
data
가 []
이면 메시지의 끝을 나타냅니다. 반환되는 Response.Body.Data
는 전체 변환된 string형 또는 문자형 벡터를 포함합니다.
UTF-8과 같은 멀티바이트 인코딩의 경우, data
로 구성된 특정 버퍼가 부분적인 멀티바이트 문자로 끝나는 경우가 있을 수 있습니다. 이 경우, 다음번 putData
가 호출되어 마지막 문자가 완성되기 전까지 Response.Body.Data
에 마지막 문자가 포함되지 않을 수 있습니다.
이 메서드는 putData
의 재정의된 메서드입니다. 이 소비자의 서브클래스를 구현하여 문자 집합 변환이 수행되기 전에 원시 바이트를 검토하려면 이 메서드를 재정의하고, data
를 검토하고, 필요한 경우 Charset
속성을 변경한 다음 data
가 변환되어 Response.Body.Data
에 저장되도록 이 슈퍼클래스 메서드로 전달하십시오. 이전 버퍼를 처리하도록 putData
가 이미 호출된 뒤에 Charset
을 변경하면 이전 버퍼의 끝에 있는 아직 변환되지 않은 부분적인 멀티바이트 문자가 손실될 수 있다는 사실에 유의하십시오. 이전에 수신된 모든 문자가 싱글바이트인 경우(예: UTF-8의 ASCII 서브셋이나 US-ASCII)에는 이러한 현상이 발생하지 않습니다.
문자 집합 변환이 수행된 뒤에 데이터 버퍼가 수신되면 각 버퍼를 검토해야 하는 것이 좋을 것입니다. 이렇게 하려면 이 메서드를 다음과 같이 재정의하십시오(TextType
이 char
인지 string
인지에 관계없음).
function [len, stop] = putData(obj, data) oldLength = obj.CurrentLength; % send raw bytes to StringConsumer for conversion [len, stop] = obj.putData@matlab.net.http.io.StringConsumer(data); newData = obj.Response.Body.Data.extractAfter(oldLength); % ...process newData...
이제 newData
는 변환 후에 가장 최근에 추가된 데이터를 포함합니다. 참고로, 위 패턴은 여전히 결과 문자열을 Response.Body.Data
에 저장합니다.
서브클래스가 문자열을 처리한 후 자체 결과를 응답으로 스트리밍하고자 하는 경우에는 convert
메서드를 사용하여 이 객체의 TextType
과 Charset
에 따라 데이터를 변환하십시오. 이 경우, 데이터의 끝부분에서만 빈 인수로 putData
메서드를 호출해야 합니다.
입력 인수
출력 인수
특성
Access | public |
예제
이 메서드의 서브클래스화에 대한 예는 Display Streamed Data in Figure Window의 PricesStreamer
클래스 putData
메서드를 참조하십시오.
버전 내역
R2018a에 개발됨