Main Content

complete

클래스: matlab.net.http.io.ContentProvider
패키지: matlab.net.http.io

ContentProvider에 대한 HTTP 헤더 완성

구문

complete(provider,URI)

설명

complete(provider,URI)는 이 제공자에게 필요한 헤더 필드로 메시지의 헤더를 확장합니다. RequestMessage.send 메서드와 RequestMessage.complete 메서드는 헤더의 유효성을 검사하거나 디폴트 필드를 추가하기 전에, 그리고 expectedContentLength를 제외한 이 클래스의 다른 메서드를 호출하기 전에 이 메서드를 호출합니다.

서브클래스는 여기서 Content-Type과 같이 콘텐츠에 종속되는 필드를 헤더에 추가할 수 있습니다. 자세한 내용은 Header 속성에 대한 설명을 참조하십시오.

RequestMessage의 메서드는 메시지가 이미 완성되었으면(즉, RequestMessage.Completedtrue이면) 이 메서드를 호출하지 않습니다. 단, 메시지가 완성된 이후에 변경되면 RequestMessage.Completed 속성이 재설정되어 이러한 메서드가 이 메시지를 다시 호출할 수 있게 됩니다. 따라서 제공자는 start가 호출되기 전에 complete가 여러 차례 호출될 수 있다는 사실에 유의해야 합니다. start가 호출되면 MATLAB®reusabletrue를 반환하여 이 제공자를 다른 메시지에 재사용할 수 있음을 나타내지 않는 이상 이 제공자에서 complete를 다시 호출하지 않습니다.

다른 ContentProvider를 확장하는 ContentProvider는 먼저 슈퍼클래스의 complete 메서드를 호출하여 슈퍼클래스에 필요한 헤더 필드를 Header에 추가하고, 반환되면 해당 필드를 수정해야 합니다.

이 메서드의 디폴트 동작은 아무것도 하지 않지만, 이 제공자가 이미 시작되었고 재사용 불가한 경우에는 예외를 발생시킵니다. 이 메서드를 재정의하는 제공자는 항상 자신의 슈퍼클래스를 호출해야 합니다.

이 제공자가 multipart 대리자가 아닌 경우, (청크 형식의 전송 코딩을 피하기 위해) 메시지에 Content-Length 필드를 포함하려면 expectedContentLength에 비어 있지 않은 값을 반환하거나 이 메서드가 Header에 Content-Length 필드를 삽입하도록 구현하십시오.

이 메서드는 Completed 속성이 true로 설정된 메시지에서는 호출되지 않습니다. 이는 일반적으로 메시지가 여러 차례 재전송되더라도 이 메서드는 메시지당 한 번만 호출된다는 것을 의미합니다. 따라서 이 메서드의 구현은 메시지당 한 번만 실행되어야 하는 초기화만 수행해야 합니다. 데이터의 전송 준비가 완료되기 전까지는 실행될 필요가 없는 복잡한 초기화는 start 메서드가 수행해야 합니다.

입력 인수

모두 확장

콘텐츠 제공자로, matlab.net.http.io.ContentProvider 객체로 지정됩니다.

URI로, matlab.net.URI 객체로 지정됩니다.

특성

Accessprotected

예제

모두 확장

다음은 SuperclassProvider를 확장하고 HeaderField myField를 추가하는 ContentProvider의 코딩 패턴입니다.

function complete(obj, uri)
            complete@SuperclassProvider(obj, uri);
            field = obj.Header.getFields('My-Field');
            if isempty(field)
                myField = HeaderField('My-Field', value);
                obj.Header = obj.Header.addFields(myField);
            end

버전 내역

R2018a에 개발됨