JavaCronetEngine

public final class JavaCronetEngine extends CronetEngineBase


java.net.HttpURLConnection 지원 CronetEngine

netlog, 전송된 데이터 측정, bidistream, 캐시 또는 우선순위를 지원하지 않습니다.

요약

공개 생성자

공개 메서드

void

요청 정보와 함께 각 요청이 끝난 후 호출되는 리스너를 등록합니다.

void

네트워크 품질 추정기가 샘플 왕복 시간을 확인할 때마다 호출되는 리스너를 등록합니다.

void

네트워크 품질 추정기가 샘플 처리량 측정을 확인할 때마다 호출되는 리스너를 등록합니다.

void
bindToNetwork(long networkHandle)

엔진을 지정된 네트워크 핸들에 바인딩합니다.

void
configureNetworkQualityEstimatorForTesting(
    boolean useLocalHostRequests,
    boolean useSmallerResponses,
    boolean disableOfflineCheck
)

테스트를 위해 네트워크 품질 추정기를 구성합니다.

ExperimentalUrlRequest
createRequest(
    String url,
    UrlRequest.Callback callback,
    Executor executor,
    int priority,
    Collection<Object> connectionAnnotations,
    boolean disableCache,
    boolean disableConnectionMigration,
    boolean allowDirectExecutor,
    boolean trafficStatsTagSet,
    int trafficStatsTag,
    boolean trafficStatsUidSet,
    int trafficStatsUid,
    RequestFinishedInfo.Listener requestFinishedListener,
    int idempotency,
    long networkHandle,
    String method,
    ArrayList<Map.Entry<StringString>> requestHeaders,
    UploadDataProvider uploadDataProvider,
    Executor uploadDataProviderExecutor,
    byte[] sharedDictionaryHash,
    ByteBuffer sharedDictionary,
    @NonNull String sharedDictionaryId
)
URLStreamHandlerFactory

HTTP 및 HTTPS 트래픽을 처리하는 URLStreamHandlerFactory를 만듭니다.

int

활성 요청 수를 반환합니다.

int

네트워크 품질 추정기에서 계산한 다운스트림 처리량 추정치 (킬로비트/초)를 반환합니다.

int

네트워크 품질 추정기에서 계산한 유효 연결 유형의 추정치를 반환합니다.

byte[]

이 메서드는 지원 중단되었습니다.

최신 버전의 Cronet에서는 항상 빈 배열이 반환됩니다.

int

네트워크 품질 추정기에서 계산한 HTTP RTT 추정치 (밀리초)를 반환합니다.

int

네트워크 품질 추정기에서 계산한 전송 RTT 추정치 (밀리초)를 반환합니다.

String
URLConnection

URLurl로 지정된 리소스에 대한 새 연결을 설정합니다.

URLConnection
openConnection(URL url, Proxy proxy)

지정된 프록시를 사용하여 URLurl로 지정된 리소스에 대한 새 연결을 설정합니다.

void

완료된 요청 리스너를 삭제합니다.

void

이전에 addRttListener로 등록된 경우 왕복 시간 리스너를 삭제합니다.

void

처리량 리스너를 삭제합니다.

void

활성 요청이 없으면 CronetEngine를 종료하고, 그렇지 않으면 예외를 발생시킵니다.

void
startNetLogToDisk(String dirPath, boolean logAll, int maxSize)

크기가 제한된 지정된 디렉터리에 NetLog 로깅을 시작합니다.

void
startNetLogToFile(String fileName, boolean logAll)

파일에 NetLog 로깅을 시작합니다.

void

NetLog 로깅을 중지하고 파일을 디스크에 플러시합니다.

보호된 메서드

ExperimentalBidirectionalStream
createBidirectionalStream(
    String url,
    BidirectionalStream.Callback callback,
    Executor executor,
    String httpMethod,
    List<Map.Entry<StringString>> requestHeaders,
    @CronetEngineBase.StreamPriority int priority,
    boolean delayRequestHeadersUntilFirstFlush,
    Collection<Object> connectionAnnotations,
    boolean trafficStatsTagSet,
    int trafficStatsTag,
    boolean trafficStatsUidSet,
    int trafficStatsUid,
    long networkHandle
)

상속된 상수

org.chromium.net.CronetEngine에서
static final int

활성 요청 수의 값을 알 수 없음

org.chromium.net.impl.CronetEngineBase에서
static final long

상속된 메서드

org.chromium.net.impl.CronetEngineBase에서
ExperimentalUrlRequest.Builder
newUrlRequestBuilder(
    String url,
    UrlRequest.Callback callback,
    Executor executor
)

UrlRequest 빌더를 만듭니다.

공개 생성자

JavaCronetEngine

public JavaCronetEngine(CronetEngineBuilderImpl builder)

공개 메서드

addRequestFinishedListener

public void addRequestFinishedListener(RequestFinishedInfo.Listener listener)

요청 정보와 함께 각 요청이 끝난 후 호출되는 리스너를 등록합니다.

리스너는 리스너가 제공한 java.util.concurrent.Executor에서 호출됩니다.

매개변수
RequestFinishedInfo.Listener listener

완료된 요청의 리스너입니다.

addRttListener

public void addRttListener(NetworkQualityRttListener listener)

네트워크 품질 추정기가 샘플 왕복 시간을 확인할 때마다 호출되는 리스너를 등록합니다. 이 함수는 enableNetworkQualityEstimator 후에 호출해야 하며, 그렇지 않으면 예외가 발생합니다. 왕복 시간은 TCP, QUIC, URL 요청 레이어를 비롯한 네트워크 스택의 다양한 레이어에서 기록될 수 있습니다. 리스너는 enableNetworkQualityEstimator에 전달된 java.util.concurrent.Executor에서 호출됩니다.

매개변수
NetworkQualityRttListener listener

왕복 시간 리스너입니다.

addThroughputListener

public void addThroughputListener(NetworkQualityThroughputListener listener)

네트워크 품질 추정기가 샘플 처리량 측정을 확인할 때마다 호출되는 리스너를 등록합니다. enableNetworkQualityEstimator 후에 호출해야 합니다. 처리량 관측치는 하나 이상의 URL 응답이 수신되는 시간에 활성 네트워크 인터페이스를 통해 읽은 바이트를 측정하여 계산됩니다. 리스너는 enableNetworkQualityEstimator에 전달된 java.util.concurrent.Executor에서 호출됩니다.

매개변수
NetworkQualityThroughputListener listener

처리량 리스너입니다.

bindToNetwork

public void bindToNetwork(long networkHandle)

엔진을 지정된 네트워크 핸들에 바인딩합니다. 이 엔진을 통해 생성된 모든 요청은 이 핸들과 연결된 네트워크를 사용합니다. 이 네트워크가 연결 해제되면 모든 요청이 실패하며, 정확한 오류는 네트워크가 연결 해제될 때 요청 처리 단계에 따라 달라집니다. 네트워크 핸들은 Network#getNetworkHandle를 통해 가져올 수 있습니다. Android Marshmallow부터 사용할 수 있습니다.

매개변수
long networkHandle

엔진을 바인딩할 네트워크 핸들입니다. UNBIND_NETWORK_HANDLE을 지정하여 바인딩을 해제합니다.

configureNetworkQualityEstimatorForTesting

public void configureNetworkQualityEstimatorForTesting(
    boolean useLocalHostRequests,
    boolean useSmallerResponses,
    boolean disableOfflineCheck
)

테스트를 위해 네트워크 품질 추정기를 구성합니다. 이 메서드는 왕복 시간 및 처리량 리스너가 추가되기 전, 네트워크 품질 추정기가 사용 설정된 후에 호출해야 합니다.

매개변수
boolean useLocalHostRequests

견적에 localhost 요청을 포함합니다.

boolean useSmallerResponses

처리량 추정치에 작은 응답을 포함합니다.

boolean disableOfflineCheck

true로 설정하면 유효 연결 유형을 계산하거나 환경설정을 쓸 때 기기 오프라인 확인을 사용 중지합니다.

createRequest

public ExperimentalUrlRequest createRequest(
    String url,
    UrlRequest.Callback callback,
    Executor executor,
    int priority,
    Collection<Object> connectionAnnotations,
    boolean disableCache,
    boolean disableConnectionMigration,
    boolean allowDirectExecutor,
    boolean trafficStatsTagSet,
    int trafficStatsTag,
    boolean trafficStatsUidSet,
    int trafficStatsUid,
    RequestFinishedInfo.Listener requestFinishedListener,
    int idempotency,
    long networkHandle,
    String method,
    ArrayList<Map.Entry<StringString>> requestHeaders,
    UploadDataProvider uploadDataProvider,
    Executor uploadDataProviderExecutor,
    byte[] sharedDictionaryHash,
    ByteBuffer sharedDictionary,
    @NonNull String sharedDictionaryId
)

createURLStreamHandlerFactory

public URLStreamHandlerFactory createURLStreamHandlerFactory()

HTTP 및 HTTPS 트래픽을 처리하는 URLStreamHandlerFactory를 만듭니다. 이 클래스의 인스턴스는 setURLStreamHandlerFactory를 통해 설치할 수 있으므로 openConnection을 통해 생성된 모든 요청에 기본적으로 이 CronetEngine을 사용합니다.

Cronet은 시스템을 통해 제공되는 특정 HTTP 기능을 사용하지 않습니다.

Cronet은 HTTPS 프로토콜을 사용하는 요청을 지원하고 권장하지만 HttpsURLConnection API는 지원하지 않습니다. 이러한 지원 부족에는 시스템을 통해 제공되는 특정 HTTPS 기능을 사용하지 않는 것도 포함됩니다.

반환
URLStreamHandlerFactory

이 CronetEngine에서 구현한 URLStreamHandlerFactory 인스턴스

getActiveRequestCount

public int getActiveRequestCount()

활성 요청 수를 반환합니다.

이 메서드가 예외를 발생시키지 않는다고 가정하면 UrlRequest.start()에서 요청이 '활성'이 됩니다. 모든 콜백이 반환되고 향후 추가 콜백을 트리거할 수 없으면 비활성 상태가 됩니다. 실제로 이는 onSucceeded/onCanceled/onFailed가 반환되고 모든 요청 완료 리스너가 반환되면 요청이 비활성 상태가 된다는 의미입니다. 자세한 내용은 Cronet 요청 수명 주기를 참고하세요.

getDownstreamThroughputKbps

public int getDownstreamThroughputKbps()

네트워크 품질 추정기에서 계산한 다운스트림 처리량 추정치 (킬로비트/초)를 반환합니다. 값을 사용할 수 없는 경우 CONNECTION_METRIC_UNKNOWN로 설정합니다. enableNetworkQualityEstimator 후에 호출해야 하며, 그렇지 않으면 예외가 발생합니다.

반환
int

다운스트림 처리량의 추정치(kbit/초)입니다.

getEffectiveConnectionType

public int getEffectiveConnectionType()

네트워크 품질 추정기에서 계산한 유효 연결 유형의 추정치를 반환합니다. enableNetworkQualityEstimator를 호출하여 이 값의 계산을 시작합니다.

반환
int

예상 연결 유형입니다. 반환된 값은 EFFECTIVE_CONNECTION_TYPE_* 중 하나입니다.

getGlobalMetricsDeltas

public byte[] getGlobalMetricsDeltas()

getHttpRttMs

public int getHttpRttMs()

네트워크 품질 추정기에서 계산한 HTTP RTT 추정치 (밀리초)를 반환합니다. 값을 사용할 수 없는 경우 CONNECTION_METRIC_UNKNOWN로 설정합니다. enableNetworkQualityEstimator 후에 호출해야 하며, 그렇지 않으면 예외가 발생합니다.

반환
int

HTTP RTT 추정치(밀리초)입니다.

getTransportRttMs

public int getTransportRttMs()

네트워크 품질 추정기에서 계산한 전송 RTT 추정치 (밀리초)를 반환합니다. 값을 사용할 수 없는 경우 CONNECTION_METRIC_UNKNOWN로 설정합니다. enableNetworkQualityEstimator 후에 호출해야 하며, 그렇지 않으면 예외가 발생합니다.

반환
int

전송 RTT 추정치(밀리초)입니다.

getVersionString

public String getVersionString()
반환
String

엔진의 사람이 읽을 수 있는 버전 문자열입니다.

openConnection

public URLConnection openConnection(URL url)

URLurl로 지정된 리소스에 대한 새 연결을 설정합니다.

참고: Cronet의 java.net.HttpURLConnection 구현에는 특정 제한사항이 적용됩니다. 자세한 내용은 createURLStreamHandlerFactory을 참고하세요.

매개변수
URL url

연결할 리소스의 URL입니다.

반환
URLConnection

이 CronetEngine에서 구현한 java.net.HttpURLConnection 인스턴스

생성 값
java.io.IOException

연결을 여는 중에 오류가 발생한 경우

openConnection

public URLConnection openConnection(URL url, Proxy proxy)

지정된 프록시를 사용하여 URLurl로 지정된 리소스에 대한 새 연결을 설정합니다.

참고: Cronet의 java.net.HttpURLConnection 구현에는 특정 제한사항이 적용됩니다. 자세한 내용은 createURLStreamHandlerFactory을 참고하세요.

매개변수
URL url

연결할 리소스의 URL입니다.

Proxy proxy

연결을 설정할 때 사용할 프록시입니다.

반환
URLConnection

이 CronetEngine에서 구현한 java.net.HttpURLConnection 인스턴스

생성 값
java.io.IOException

연결을 여는 중에 오류가 발생한 경우

removeRequestFinishedListener

public void removeRequestFinishedListener(RequestFinishedInfo.Listener listener)

완료된 요청 리스너를 삭제합니다.

매개변수
RequestFinishedInfo.Listener listener

삭제할 리스너입니다.

removeRttListener

public void removeRttListener(NetworkQualityRttListener listener)

이전에 addRttListener로 등록된 경우 왕복 시간 리스너를 삭제합니다. 관찰 수신을 중지하기 위해 NetworkQualityRttListener가 추가된 후에 호출해야 합니다.

매개변수
NetworkQualityRttListener listener

왕복 시간 리스너입니다.

removeThroughputListener

public void removeThroughputListener(NetworkQualityThroughputListener listener)

처리량 리스너를 삭제합니다. 관찰 수신을 중지하기 위해 addThroughputListener와 함께 NetworkQualityThroughputListener가 추가된 후에 호출해야 합니다.

매개변수
NetworkQualityThroughputListener listener

처리량 리스너입니다.

shutdown

public void shutdown()

활성 요청이 없으면 CronetEngine를 종료하고, 그렇지 않으면 예외를 발생시킵니다.

네트워크 스레드에서 호출할 수 없습니다. Cronet이 Executor를 호출하는 스레드 (Executor가 콜백을 호출하는 스레드와 다름)입니다. 모든 CronetEngine 리소스가 정리될 때까지 차단될 수 있습니다.

startNetLogToDisk

public void startNetLogToDisk(String dirPath, boolean logAll, int maxSize)

크기가 제한된 지정된 디렉터리에 NetLog 로깅을 시작합니다. NetLog에는 모든 활성 CronetEngine에서 내보낸 이벤트가 포함됩니다. NetLog는 디버깅에 유용합니다. stopNetLog 로깅이 중지되면 데이터가 dirPath의 netlog.json에 기록됩니다. 로깅이 중단되면 https://chromium .googlesource.com/chromium/src/+/main/net/tools/stitch_net_log_files.py를 사용하여.inprogress 하위 디렉터리에서 찾은 파일을 수동으로 스티치할 수 있습니다. 로그는 chrome://net-internals/#import로 이동한 Chrome 브라우저를 사용하여 볼 수 있습니다.

매개변수
String dirPath

netlog.json 파일이 생성될 디렉터리입니다. dirPath는 이미 존재해야 합니다. NetLog 파일이 디렉터리에 있으면 안 됩니다. 활성 로깅 중인 경우 이 메서드는 무시됩니다.

boolean logAll

true: 기본 이벤트, 사용자 쿠키, 사용자 인증 정보, 전송된 모든 바이트를 로그에 포함합니다. 이 옵션은 사용자의 사용자 인증 정보를 노출하므로 개인 정보 보호 위험이 있으며, 사용자의 동의가 있고 로그가 공개되지 않는 상황에서만 사용해야 합니다. false를 사용하여 기본 이벤트만 포함합니다.

int maxSize

NetLog에서 사용해야 하는 최대 총 디스크 공간(바이트)입니다. 실제 디스크 공간 사용량이 이 한도를 약간 초과할 수 있습니다.

startNetLogToFile

public void startNetLogToFile(String fileName, boolean logAll)

파일에 NetLog 로깅을 시작합니다. NetLog에는 모든 활성 CronetEngine에서 내보낸 이벤트가 포함됩니다. NetLog는 디버깅에 유용합니다. chrome://net-internals/#import로 이동한 Chrome 브라우저를 사용하여 파일을 볼 수 있습니다.

매개변수
String fileName

전체 파일 경로입니다. 비워 둘 수 없습니다. 파일이 있으면 시작 전에 잘립니다. 활성 로깅 중인 경우 이 메서드는 무시됩니다.

boolean logAll

true: 기본 이벤트, 사용자 쿠키, 사용자 인증 정보, 전송된 모든 바이트를 로그에 포함합니다. 이 옵션은 사용자의 사용자 인증 정보를 노출하므로 개인 정보 보호 위험이 있으며, 사용자의 동의가 있고 로그가 공개되지 않는 상황에서만 사용해야 합니다. false를 사용하여 기본 이벤트만 포함합니다.

stopNetLog

public void stopNetLog()

NetLog 로깅을 중지하고 파일을 디스크에 플러시합니다. 로깅 세션이 진행 중이 아니면 이 호출은 무시됩니다.

보호된 메서드

createBidirectionalStream

protected ExperimentalBidirectionalStream createBidirectionalStream(
    String url,
    BidirectionalStream.Callback callback,
    Executor executor,
    String httpMethod,
    List<Map.Entry<StringString>> requestHeaders,
    @CronetEngineBase.StreamPriority int priority,
    boolean delayRequestHeadersUntilFirstFlush,
    Collection<Object> connectionAnnotations,
    boolean trafficStatsTagSet,
    int trafficStatsTag,
    boolean trafficStatsUidSet,
    int trafficStatsUid,
    long networkHandle
)