Main Content

matlab.net.http.io.MultipartProvider 클래스

네임스페이스: matlab.net.http.io
슈퍼클래스: matlab.net.http.io.ContentProvider

multipart/mixed HTTP 메세지를 전송할 ContentProvider

설명

이 제공자는 multipart HTTP 메시지의 생성을 돕습니다.

디폴트 Content-Type은 "multipart/mixed"이며, 메시지의 페이로드는 각 파트가 해당 파트를 설명하는 자체 헤더를 갖는 임의 개수의 파트를 포함합니다. multipart 메시지에 대한 자세한 내용은 RFC Editor 웹사이트의 RFC 2046, section 5.1을 참조하십시오.

서버가 multipart/mixed 메시지를 확실히 수신한다고 알고 있는 경우에만 이 제공자를 직접 사용하십시오. 일반적으로 multipart 메시지를 수신하는 서버는 "multipart/form-data"를 대신 요구하는데, 이는 서브클래스 MultipartFormProvider에 의해 구현됩니다. 서브클래스를 사용하여 다른 multipart 유형을 구현할 수 있습니다.

matlab.net.http.io.MultipartProvider 클래스는 handle 클래스입니다.

서브클래스 작성자

multipart 메시지의 각 파트는 RequestMessage.Body에서 허용되는 임의 형식을 갖는 데이터나 데이터를 생성하는 ContentProvider로 지정될 수 있습니다. 파트에 대해 데이터를 제공하는 데 사용되는 ContentProvider 객체를 대리자라고 하며, 이 MultipartProvider는 최상위 제공자입니다. 일반적으로, 모든 ContentProvider는 대리자가 될 수 있습니다. MultipartProvider는 메시지를 송신하는 도중에 complete 또는 start와 같은 메서드를 호출하여 각 대리자를 차례로 호출하기 때문에 대리자는 일반적으로 자신이 전체 메시지가 아닌 한 파트의 콘텐츠를 제공하고 있다는 사실을 알 필요가 없습니다.

이 제공자는 RequestMessage를 항상 청크 형식으로 전송하기 때문에 메시지나 파트의 헤더에 Content-Length 헤더 필드를 포함하지 않습니다. MultipartProvider는 파트를 전송하기 전에 각 대리자의 expectedContentLength 메서드를 호출하지만, 반환 값(비어 있지 않은 경우)을 Content-Length 필드를 생성하기 위해서가 아니라 길이를 적용하기 위한 목적으로만 사용합니다. 대리자가 파트에 특정 Content-Length 필드가 표시되는 것을 원치 않는 경우, 자신의 Header 속성에 해당 필드를 명시적으로 삽입해야 합니다. MATLAB®이 제공하는 모든 ContentProvider 서브클래스는 이러한 처리 작업을 수행하지 않습니다.

생성

설명

provider = MultipartProvider(part1,...,partN)은 HTTP 요청에서 지정된 파트를 지정된 순서로 전송하는 MultipartProvider를 생성합니다. 기본적으로 이 제공자는 메시지의 Content-Type을 "multipart/mixed"로 설정하지만, 서브클래스는 Subtype 속성을 설정하여 하위유형을 변경할 수 있습니다. 생성자는 Parts 속성 셀형 배열의 요소들을 각 part1,...,partN 인수로 설정합니다.

속성

모두 확장

퍼블릭 속성

메시지 본문의 파트로, 다음 값 중 하나 이상으로 구성된 셀형 배열로 지정됩니다.

ContentProvider 객체

MultipartProvider는 지정된 제공자(대리자)에게 파트의 생성을 위임합니다. 이때 대리자의 complete 메서드를 호출하여 파트에 대한 헤더 정보를 가져오고, getData 메서드를 호출하여 데이터를 가져옵니다. 대리자의 Header 속성은 파트의 헤더에 사용됩니다. ContentProvider의 아무 서브클래스나 여기에 지정할 수 있습니다. 파트의 끝은 헤더 필드가 아닌 경계 문자열로 지정되므로, 일반적으로 대리자는 콘텐츠의 길이를 지정하지도, expectedContentLength 메서드를 구현하지도 않습니다. expectedContentLength 메서드가 비어 있지 않은 값을 반환하도록 구현된 경우, 이 값은 Content-Length 필드를 생성하기 위해서가 아니라 콘텐츠의 길이를 적용하기 위한 목적으로만 사용됩니다.

RequestMessage 객체

MultipartProviderRequestMessageHeaderBody를 파트로서 전송합니다. Body의 Payload 속성이 설정되어 있는 경우, 이 속성은 원시 페이로드로 사용됩니다. Payload 속성이 설정되지 않은 경우, MessageBody.Data에 대해 설명된 대로 Body의 Data 속성이 자신의 유형이나 Header의 Content-Type 필드에 따라 변환됩니다. 이 옵션은 전송해야 할 데이터에 대해 MATLAB이 RequestMessage를 전송할 때 일반적으로 사용하는 디폴트 데이터 처리를 사용하려는 경우에 유용합니다. 이 옵션을 사용하면 ContentProvider 서브클래스를 작성하지 않고도 요청의 사용자 지정 헤더 필드가 파트의 Header로 사용되도록 지정할 수 있고 데이터가 변환되는 방식을 제어할 수 있습니다. RequestMessage.RequestLine 속성은 무시됩니다.

MessageBody 객체

MessageBody는 이 객체가 Content-Type 필드가 없는 RequestMessage에 포함된 것처럼 처리됩니다. 이 옵션은 데이터 유형에 따른 디폴트 데이터 처리로 충분한 경우에 유용하며, 사용자가 파트에 대해 사용자 지정 헤더 필드를 지정할 필요가 없습니다. MATLAB은 데이터의 유형에 따라 Content-Type 필드를 파트에 삽입합니다. 변환 규칙은 MessageBody.Data를 참조하십시오.

ContentProvider 객체, RequestMessage 객체 및/또는 MessageBody 객체로 구성된 배열

이는 배열의 각 요소를 하나의 파트로 처리합니다. 셀형 배열로 처리하지 않습니다.

getData 메서드에 대한 핸들

이 메서드에는 ContentProvider.getData의 시그니처가 있어야 합니다. 이 경우 해당 파트의 Content-Type이 "application/octet-stream"으로 설정되므로, 이 옵션은 이진 데이터를 전송할 때 유용합니다. 이 옵션을 사용할 때는 해당 파트의 사용자 지정 헤더 필드를 지정할 수 없습니다.

다른 모든 유형

유형이 위 유형 중 아무것과도 일치하지 않고 함수 핸들이 아니라면 MessageBodyData 속성에 존재하는 것처럼 처리됩니다. MessageBody 유형에 대한 설명을 참조하십시오.

특성:

GetAccess
public
SetAccess
public
Dependent
true

메시지 또는 파트의 헤더 필드로, 하나 이상의 matlab.net.http.HeaderField 객체로 구성된 벡터로 지정됩니다.

서브클래스 작성자만 이 속성을 사용합니다. MATLAB은 제공자의 complete 메서드를 호출하기 전에 먼저 이 속성을 설정합니다. multipart가 아닌 메시지의 경우, MATLAB은 Request.Header의 내용에서 matlab.net.http.field.GenericFields나 값이 비어 있는 필드를 제외한 값으로 이 속성을 초기화합니다. ContentProvider는 이 속성을 사용하여 전송할 데이터를 설명하는 헤더 필드를 추가하거나 이미 메시지에 있는 헤더 필드에 파라미터를 추가합니다. MultipartProvider의 대리자에서, 위임하는 제공자가 해당 파트에 대해 삽입하고자 하는 헤더 필드로 MATLAB은 이 속성을 초기화합니다. 대리자는 이러한 필드를 수정하거나 변경할 수 있습니다.

제공자의 complete 메서드에서 반환되면 multipart 메시지가 아닌 경우 MATLAB은 이 속성을 읽어 해당 내용을 Request의 헤더에 병합합니다. 이 Header의 필드 중에서 Request.Header에 나타나지 않은 Names를 갖는 필드는 Request.Header의 끝에 추가됩니다. 이 Header의 한 필드의 NameRequest.Header의 그것과 같고, 두 필드 모두 비어 있지 않은 Values를 갖는 경우,

  • Request.Header의 필드가 GenericField이면 Header의 필드를 무시하십시오.

  • Request.Header의 필드가 GenericField가 아니면 이 필드를 Header의 필드로 대체하십시오.

이러한 필드 중 하나 또는 둘 모두가 빈 Value를 가지면, 해당 필드가 Request.Header에서 제거되고 정상적인 메시지 완료 과정의 일부로 추가되지 않습니다.

MultipartProvider의 대리자인 경우 Header의 전체 내용이 해당 파트의 헤더로 사용됩니다. multipart 대리자는 Request.Header에 자신의 Header와 관련 있는 필드가 포함되어 있다고 간주해서는 안 됩니다. 제공자는 MyDelegatorMultipartProvider인지 보고 multipart 여부를 확인할 수 있지만, 이런 테스트가 필요한 경우는 드뭅니다.

MATLAB은 제공자의 complete 메서드 호출 후 반환된 경우에만 이 속성을 읽어 들입니다. MATLAB이 start를 호출하면 이 배열의 변경 사항은 무시됩니다.

클래스 작성자는 슈퍼클래스에서 complete를 호출하기 전에 서브클래스가 이 Header에(서브클래스의 complete 메서드에) 필드를 추가했을 수 있다는 사실에 유의해야 합니다. 이러한 필드를 그대로 유지하고 같은 이름을 갖는 필드를 추가하지 않는 것이 좋습니다. 단, 필드에 파라미터를 추가하는 것은 허용됩니다. 예를 들어, 슈퍼클래스는 문자 집합 파라미터를 갖지 않는 기존 Content-Type 필드에 문자 집합 파라미터를 추가할 수 있습니다.

특성:

GetAccess
public
SetAccess
public

청크 형식의 전송 코딩을 강제할지 여부를 나타내는 표시로, 부울로 지정됩니다. 이 속성은 서브클래스 작성자에게만 사용하며, multipart 대리자가 아닌 제공자에게만 적용됩니다. 서브클래스는 ForceChunked를 설정하여 청크 형식의 전송 코딩을 사용하여 내용을 전송할지 여부를 제어합니다. false(디폴트 값)인 경우, MATLAB은 메시지의 전송 준비가 완료된 시점에 콘텐츠 길이를 알고 있는지에 따라 청크 형식으로 콘텐츠를 전송할지 여부를 결정합니다.

  • MATLAB이 콘텐츠 길이를 알고 있는 경우(메시지가 Content-Length 필드를 포함하거나 이 제공자의 expectedContentLength 메서드가 숫자를 반환한 경우), MATLAB은 청크 형식으로 콘텐츠를 전송할지 여부를 결정합니다.

  • MATLAB이 콘텐츠 길이를 알지 못하는 경우(헤더에 Content-Length 필드가 없고 expectedContentLength가 비어 있는 값을 반환한 경우), MATLAB은 항상 청크 형식으로 메시지를 전송합니다.

ForceChunkedtrue이면 MATLAB은 알려진 길이가 청크 크기보다 작은 경우를 제외하고 콘텐츠 길이를 알고 있는지에 관계없이 청크 형식으로 메시지를 전송합니다. HTTP는 청크 형식 메시지가 Content-Length 필드를 갖는 것을 허용하지 않으므로 이 속성이 true인 경우 메시지가 Content-Length 필드를 포함하면 안 됩니다. 단, 사용자가 예상 데이터 길이를 반환하는지 MATLAB이 확인하기를 원하는 경우에는 expectedContentLength 메서드에서 여전히 0이 아닌 값을 반환할 수 있습니다.

MATLAB이 청크 형식 메시지를 전송하기로 결정한 경우, 각 청크의 크기는 getData가 반환한 데이터의 길이와 동일합니다.

MATLAB은 complete 메서드를 호출한 다음 start를 호출하기 전에 이 값을 읽어 들입니다. 이때, 이 필드를 설정하지는 않습니다.

특성:

GetAccess
public
SetAccess
public

전송할 요청 메시지로, matlab.net.http.RequestMessage 객체로 지정됩니다.

서브클래스 작성자만 이 속성을 사용합니다. RequestMessage.send 메서드와 RequestMessage.complete 메서드는 이 제공자의 다른 메서드를 호출하기 전에, 그리고 추가 헤더 필드를 추가하거나 메시지의 유효성을 검사하기 전에 Body에 이 제공자가 배치된 RequestMessage에 이 속성을 설정합니다. 제공자는 이 메시지를 검토해 원본 요청에 어떤 데이터가 포함되었는지 확인할 수 있습니다.

대리자에게 표시되는 이 속성의 값은 위임 주체에게 표시되는 값과 동일합니다. ContentProviders는 자신이 대리자인 경우 요청 메시지의 본문 중 일부만 제공할 수도 있으므로 이 요청의 헤더 필드가 자신이 제공하는 데이터와 관련이 있다고 간주하면 안 됩니다. 일반적으로 대리자는 이 요청의 헤더 필드 중에서 Content-Type과 같이 데이터와 관련 있는 필드를 무시해야 합니다.

제공자가 이 메시지에 헤더 필드를 추가하거나 기존 헤더 필드를 수정하려는 경우, complete 메서드에서 이러한 필드를 Header 속성에 추가해야 합니다. complete의 호출자(RequestMessage 또는 위임하는 제공자)는 이러한 필드를 어떻게 처리할지 결정합니다. RequestMessage.sendRequestMessage.complete는 항상 이러한 필드를 RequestMessageHeader로 복사합니다. 위임하는 제공자는 이러한 필드를 자신의 Header 속성에 복사하거나 (MultipartProvider의 경우와 같이) 메시지에 삽입할 수 있습니다. 자세한 내용은 Header 속성을 참조하십시오.

이 속성은 읽기 전용입니다.

특성:

GetAccesspublic
SetAccessmatlab.net.http.RequestMessage

보호 속성

제공자 하위유형으로, string형으로 지정됩니다. 디폴트 값 "mixed"는 메시지에 "multipart/mixed"로 설정된 Content-Type 헤더와 적절한 파라미터를 추가합니다. 서브클래스는 이 값을 생성자 또는 complete 메서드에서 변경할 수 있습니다. 이 값은 Content-Type에서 "multipart/" 다음에 나타납니다.

특성:

GetAccess
protected
SetAccess
protected

이 제공자가 위임하는 ContentProvider로, matlab.net.http.io.ContentProvider 객체로 지정됩니다. 이 속성은 호출하는 제공자(위임 주체)가 delegateTo 메서드에서 설정하며, 현재 위임된 제공자를 나타냅니다. 현재 위임이 없는 경우, 이 값은 비어 있습니다.

complete 메서드는 이 속성을 비어 있는 값으로 설정합니다.

특성:

GetAccess
protected
SetAccess
protected

이 제공자에게 위임된 ContentProvider로, matlab.net.http.io.ContentProvider 객체로 지정됩니다.

ContentProvider가 메시지 데이터의 일부 또는 전부를 전송하는 작업에 대한 책임을 다른 제공자에게 위임한 경우, 이 속성은 대리자에게 위임한 제공자를 식별합니다. 예를 들어, MultipartProvider는 메시지의 여러 파트를 다른 제공자들에게 위임하므로, 자신에 대한 핸들을 각 대리자에 삽입합니다. 그러지 않으면 MyDelegator는 비어 있습니다. delegateTo 메서드는 대리자에 이 속성을 설정합니다.

특성:

GetAccess
protected
SetAccess
protected

메서드

모두 확장

세부 정보

모두 확장

버전 내역

R2018a에 개발됨