UploadDataProvider

public abstract class UploadDataProvider implements Closeable


삽입자가 UrlRequest에 업로드 본문을 제공할 수 있도록 허용하는 추상 클래스입니다. 청크되지 않은 업로드 (크기를 미리 알고 있음)와 청크된 업로드 (크기를 미리 알 수 없음)를 모두 지원합니다. 일부 서버는 청크된 업로드를 지원하지 않습니다.

업로드는 데이터가 두 번 이상 전송되는 경우 여러 업로드에서 항상 청크되거나 청크되지 않습니다.

요약

공개 생성자

공개 메서드

void

이 UploadDataProvider가 더 이상 요청에 필요하지 않을 때 호출되므로 파일과 같은 리소스를 명시적으로 해제할 수 있습니다.

abstract long

청크되지 않은 업로드인 경우 업로드 길이를 반환합니다.

abstract void
read(UploadDataSink uploadDataSink, ByteBuffer byteBuffer)

업로드 데이터를 byteBuffer로 읽습니다.

abstract void
rewind(UploadDataSink uploadDataSink)

업로드 데이터를 처음으로 되감습니다.

공개 생성자

UploadDataProvider

public UploadDataProvider()

공개 메서드

닫기

public void close()

이 UploadDataProvider가 더 이상 요청에 필요하지 않을 때 호출되므로 파일과 같은 리소스를 명시적으로 해제할 수 있습니다.

생성 값
java.io.IOException

프로세스 중에 IOException이 발생한 경우 아직 완료되지 않은 경우 요청이 실패합니다. 그렇지 않으면 로깅됩니다.

getLength

public abstract long getLength()

청크되지 않은 업로드인 경우 업로드 길이를 반환합니다. 청크된 업로드인 경우 항상 -1을 반환해야 합니다.

반환
long

청크되지 않은 업로드의 업로드 길이, 그렇지 않은 경우 -1

생성 값
java.io.IOException

프로세스 중에 IOException이 발생한 경우

읽음

public abstract void read(UploadDataSink uploadDataSink, ByteBuffer byteBuffer)

업로드 데이터를 byteBuffer로 읽습니다. 완료되면 버퍼의 위치가 읽은 바이트의 끝으로 업데이트됩니다. 버퍼의 한도는 변경되지 않습니다. 이 메서드의 각 호출은 성공 시 uploadDataSink: onReadSucceeded 또는 실패 시 onReadError에 대한 동기 또는 비동기 단일 호출이 뒤따라야 합니다. 이러한 메서드 중 하나 또는 다른 메서드가 호출될 때까지 읽기 또는 되감기가 호출되지 않습니다. 연결된 UrlRequest가 취소되더라도 리소스를 안전하게 해제하기 전에 하나 또는 다른 하나를 호출해야 합니다. 예외를 발생시키면 리소스가 해제되고 요청에 오류가 발생합니다.

참고: 청크되지 않은 업로드의 경우 읽기가 성공하고 하나 이상의 바이트가 byteBuffer로 읽힌 경우에만 onReadSucceeded를 호출해야 합니다. 청크된 업로드 (데이터 크기를 알 수 없음)의 경우 빈 바이트 버퍼가 있는 마지막 청크에 대해 onReadSucceeded를 호출할 수 있습니다.

매개변수
UploadDataSink uploadDataSink

읽기가 완료되면 알릴 객체입니다.

ByteBuffer byteBuffer

읽은 바이트를 복사할 버퍼입니다. byteBuffer의 한도를 변경하지 마세요.

생성 값
java.io.IOException

프로세스 중에 IOException이 발생한 경우 발생한 예외가 CallbackException의 원인으로 설정된 상태로 onFailed가 호출됩니다.

되감기

public abstract void rewind(UploadDataSink uploadDataSink)

업로드 데이터를 처음으로 되감습니다. Cronet에서 업로드 데이터 제공자가 아직 read가 호출되지 않은 것과 동일한 상태에 있어야 할 때 호출됩니다.

작업이 완료되었음을 알리려면 이 함수의 구현에서 onRewindSucceeded를 호출하여 성공을 나타내거나 실패 시 onRewindError를 호출해야 합니다. 연결된 UrlRequest가 취소되더라도 리소스를 안전하게 해제하기 전에 하나 또는 다른 하나를 호출해야 합니다. 메서드에서 예외를 발생시키는 것은 onRewindError를 호출하는 것과 같습니다. 되감기가 지원되지 않는 경우 (예: 일회성 스트림에서 읽는 경우) onRewindError를 즉시 호출해야 합니다.

구현자는 이전 단락에 설명된 대로 되감기가 완료되었음을 싱크에 알릴 때까지 read 또는 동시 rewind 호출이 실행되지 않는다고 안전하게 가정할 수 있습니다.

이 메서드는 본문을 여러 번 업로드해야 하는 경우 Cronet에서 내부적으로 사용됩니다. 이는 리디렉션을 따르거나 제한 시간 또는 네트워크 연결 해제 후 요청을 다시 시도하는 등 다양한 상황에서 발생할 수 있습니다. 되감기 구현은 일반적으로 선택사항이지만 되감기가 구현되지 않으면 결국 되감기가 필요한 요청이 실패합니다.

매개변수
UploadDataSink uploadDataSink

되감기 작업이 성공적으로 완료되었는지 여부를 알릴 객체입니다.

생성 값
java.io.IOException

프로세스 중에 IOException이 발생한 경우 발생한 예외가 CallbackException의 원인으로 설정된 상태로 onFailed가 호출됩니다.