Main Content

putData

클래스: matlab.net.http.io.StringConsumer
네임스페이스: matlab.net.http.io

문자열 데이터로 구성된 다음 버퍼를 응답에 추가

구문

[len,stop] = putData(consumer,data)

설명

[len,stop] = putData(consumer,data)Charset의 현재 값을 사용하여 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)에는 이러한 현상이 발생하지 않습니다.

문자 집합 변환이 수행된 뒤에 데이터 버퍼가 수신되면 각 버퍼를 검토해야 하는 것이 좋을 것입니다. 이렇게 하려면 이 메서드를 다음과 같이 재정의하십시오(TextTypechar인지 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 메서드를 사용하여 이 객체의 TextTypeCharset에 따라 데이터를 변환하십시오. 이 경우, 데이터의 끝부분에서만 빈 인수로 putData 메서드를 호출해야 합니다.

입력 인수

모두 확장

콘텐츠 소비자로, matlab.net.http.io.StringConsumer 객체로 지정됩니다.

matlab.net.http.ResponseMessage 객체 내 원시 데이터로 구성된 버퍼로, 비어 있지 않은 uint8형 벡터, uint8.empty 또는 []로 지정됩니다. 이러한 값에 대한 자세한 내용은 ContentConsumer.putData 메서드의 data 입력 인수를 참조하십시오.

출력 인수

모두 확장

처리되는 데이터의 길이로, double형 또는 빈 double형으로 반환됩니다. 자세한 내용은 ContentConsumer.putDatasize 인수를 참조하십시오.

이 메시지로부터 추가 데이터를 수신할지 여부를 나타내는 표시로, truefalse로 반환됩니다. 자세한 내용은 ContentConsumer.putDatastop 인수를 참조하십시오.

특성

Accesspublic

예제

이 메서드의 서브클래스화에 대한 예는 Display Streamed Data in Figure WindowPricesStreamer 클래스 putData 메서드를 참조하십시오.

버전 내역

R2018a에 개발됨

참고 항목

| | | |