JavaCronetEngine

public final class JavaCronetEngine extends CronetEngineBase


CronetEngine soutenu par java.net.HttpURLConnection.

Ne prend pas en charge les journaux réseau, la mesure des données transférées, bidistream, le cache ni la priorité.

Résumé

Constructeurs publics

Méthodes publiques

void

Enregistre un écouteur qui est appelé après la fin de chaque requête avec les informations de la requête.

void

Enregistre un écouteur qui est appelé chaque fois que l'estimateur de qualité du réseau constate un temps d'aller-retour d'échantillon.

void

Enregistre un écouteur qui est appelé chaque fois que l'estimateur de qualité du réseau observe une mesure du débit d'échantillon.

void
bindToNetwork(long networkHandle)

Lie le moteur au handle réseau spécifié.

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

Configure l'estimateur de qualité du réseau pour les tests.

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

Crée un URLStreamHandlerFactory pour gérer le trafic HTTP et HTTPS.

int

Renvoie le nombre de requêtes actives.

int

Renvoie l'estimation du débit descendant (en kilobits par seconde) calculée par l'estimateur de qualité du réseau.

int

Renvoie une estimation du type de connexion effectif calculé par l'estimateur de qualité du réseau.

byte[]

Cette méthode est obsolète.

Dans les versions modernes de Cronet, cette méthode renvoie toujours un tableau vide.

int

Renvoie l'estimation du temps d'aller-retour HTTP (en millisecondes) calculée par l'estimateur de qualité du réseau.

int

Renvoie l'estimation du RTT de transport (en millisecondes) calculée par l'estimateur de qualité du réseau.

String
URLConnection

Établit une nouvelle connexion à la ressource spécifiée par URLurl.

URLConnection
openConnection(URL url, Proxy proxy)

Établit une nouvelle connexion à la ressource spécifiée par URLurl à l'aide du proxy donné.

void

Supprime un écouteur de requête terminée.

void

Supprime un écouteur des temps d'aller-retour s'il a été précédemment enregistré avec addRttListener.

void

Supprime un écouteur de débit.

void

Arrête le CronetEngine s'il n'y a aucune requête active, sinon génère une exception.

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

Démarre la journalisation NetLog dans un répertoire spécifié avec une taille limitée.

void
startNetLogToFile(String fileName, boolean logAll)

Démarre la consignation NetLog dans un fichier.

void

Arrête la journalisation NetLog et vide le fichier sur le disque.

Méthodes protégées

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
)

Constantes héritées

Depuis org.chromium.net.CronetEngine
static final int

La valeur du nombre de requêtes actives est inconnue

Depuis org.chromium.net.impl.CronetEngineBase
static final long

Méthodes héritées

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

Crée un compilateur pour UrlRequest.

Constructeurs publics

JavaCronetEngine

public JavaCronetEngine(CronetEngineBuilderImpl builder)

Méthodes publiques

addRequestFinishedListener

public void addRequestFinishedListener(RequestFinishedInfo.Listener listener)

Enregistre un écouteur qui est appelé après la fin de chaque requête avec les informations de la requête.

L'écouteur est appelé sur un java.util.concurrent.Executor fourni par l'écouteur.

Paramètres
RequestFinishedInfo.Listener listener

Écouteur pour les requêtes terminées.

addRttListener

public void addRttListener(NetworkQualityRttListener listener)

Enregistre un écouteur qui est appelé chaque fois que l'estimateur de qualité du réseau constate un temps d'aller-retour d'échantillon. Cette méthode doit être appelée après enableNetworkQualityEstimator, sinon une exception sera générée. Les temps d'aller-retour peuvent être enregistrés à différents niveaux de la pile réseau, y compris TCP, QUIC et au niveau de la requête d'URL. L'écouteur est appelé sur le java.util.concurrent.Executor transmis à enableNetworkQualityEstimator.

Paramètres
NetworkQualityRttListener listener

l'écouteur des délais aller-retour.

addThroughputListener

public void addThroughputListener(NetworkQualityThroughputListener listener)

Enregistre un écouteur qui est appelé chaque fois que l'estimateur de qualité du réseau observe une mesure du débit d'échantillon. Cette méthode doit être appelée après enableNetworkQualityEstimator. Les observations du débit sont calculées en mesurant les octets lus sur l'interface réseau active lorsque au moins une réponse d'URL est reçue. L'écouteur est appelé sur le java.util.concurrent.Executor transmis à enableNetworkQualityEstimator.

Paramètres
NetworkQualityThroughputListener listener

l'écouteur du débit.

bindToNetwork

public void bindToNetwork(long networkHandle)

Lie le moteur au handle réseau spécifié. Toutes les demandes créées via ce moteur utiliseront le réseau associé à ce compte. Si ce réseau se déconnecte, toutes les requêtes échoueront. L'erreur exacte dépendra de l'étape de traitement de la requête au moment de la déconnexion du réseau. Les identifiants réseau peuvent être obtenus via Network#getNetworkHandle. Disponible uniquement à partir d'Android Marshmallow.

Paramètres
long networkHandle

Handle réseau auquel associer le moteur. Spécifiez UNBIND_NETWORK_HANDLE pour dissocier.

configureNetworkQualityEstimatorForTesting

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

Configure l'estimateur de qualité du réseau pour les tests. Cette méthode doit être appelée avant l'ajout des écouteurs de temps d'aller-retour et de débit, et après l'activation de l'estimateur de qualité du réseau.

Paramètres
boolean useLocalHostRequests

inclure les requêtes adressées à localhost dans les estimations.

boolean useSmallerResponses

inclure les petites réponses dans les estimations du débit.

boolean disableOfflineCheck

Si la valeur est définie sur "true", les vérifications de l'état hors connexion de l'appareil sont désactivées lors du calcul du type de connexion effectif ou lors de l'écriture des préférences.

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()

Crée un URLStreamHandlerFactory pour gérer le trafic HTTP et HTTPS. Une instance de cette classe peut être installée via setURLStreamHandlerFactory, ce qui permet d'utiliser cette CronetEngine par défaut pour toutes les requêtes créées via openConnection.

Cronet n'utilise pas certaines fonctionnalités HTTP fournies par le système :

Bien que Cronet accepte et encourage les requêtes utilisant le protocole HTTPS, il n'est pas compatible avec l'API HttpsURLConnection. Ce manque de compatibilité inclut également l'impossibilité d'utiliser certaines fonctionnalités HTTPS fournies par le système :

Renvoie
URLStreamHandlerFactory

une instance URLStreamHandlerFactory implémentée par ce CronetEngine.

getActiveRequestCount

public int getActiveRequestCount()

Renvoie le nombre de requêtes actives.

Une requête devient "active" dans UrlRequest.start(), en supposant que cette méthode ne génère pas d'exception. Il devient inactif lorsque tous les rappels ont été renvoyés et qu'aucun autre rappel ne peut être déclenché à l'avenir. En pratique, cela signifie que la requête est inactive une fois que onSucceeded/onCanceled/onFailed a renvoyé une réponse et que tous les écouteurs de requête terminée ont renvoyé une réponse. Pour en savoir plus, consultez Cycle de vie des requêtes Cronet.

getDownstreamThroughputKbps

public int getDownstreamThroughputKbps()

Renvoie l'estimation du débit descendant (en kilobits par seconde) calculée par l'estimateur de qualité du réseau. Définissez sur CONNECTION_METRIC_UNKNOWN si la valeur n'est pas disponible. Cette méthode doit être appelée après enableNetworkQualityEstimator, sinon une exception sera générée.

Renvoie
int

Estimation du débit descendant en kilobits par seconde.

getEffectiveConnectionType

public int getEffectiveConnectionType()

Renvoie une estimation du type de connexion effectif calculé par l'estimateur de qualité du réseau. Appelez enableNetworkQualityEstimator pour commencer à calculer cette valeur.

Renvoie
int

le type de connexion estimé. La valeur renvoyée est l'une des valeurs EFFECTIVE_CONNECTION_TYPE_* .

getGlobalMetricsDeltas

public byte[] getGlobalMetricsDeltas()

getHttpRttMs

public int getHttpRttMs()

Renvoie l'estimation du temps d'aller-retour HTTP (en millisecondes) calculée par l'estimateur de qualité du réseau. Définissez sur CONNECTION_METRIC_UNKNOWN si la valeur n'est pas disponible. Cette méthode doit être appelée après enableNetworkQualityEstimator, sinon une exception sera générée.

Renvoie
int

Estimation du temps de transmission aller-retour HTTP en millisecondes.

getTransportRttMs

public int getTransportRttMs()

Renvoie l'estimation du RTT de transport (en millisecondes) calculée par l'estimateur de qualité du réseau. Définissez sur CONNECTION_METRIC_UNKNOWN si la valeur n'est pas disponible. Cette méthode doit être appelée après enableNetworkQualityEstimator, sinon une exception sera générée.

Renvoie
int

Estimation du RTT de transport en millisecondes.

getVersionString

public String getVersionString()
Renvoie
String

Chaîne de version du moteur lisible par l'utilisateur.

openConnection

public URLConnection openConnection(URL url)

Établit une nouvelle connexion à la ressource spécifiée par URLurl.

Remarque : L'implémentation java.net.HttpURLConnection de Cronet est soumise à certaines limites. Pour en savoir plus, consultez createURLStreamHandlerFactory.

Paramètres
URL url

URL de la ressource à laquelle se connecter.

Renvoie
URLConnection

une instance java.net.HttpURLConnection implémentée par ce CronetEngine.

Génère
java.io.IOException

si une erreur se produit lors de l'ouverture de la connexion.

openConnection

public URLConnection openConnection(URL url, Proxy proxy)

Établit une nouvelle connexion à la ressource spécifiée par URLurl à l'aide du proxy donné.

Remarque : L'implémentation java.net.HttpURLConnection de Cronet est soumise à certaines limites. Pour en savoir plus, consultez createURLStreamHandlerFactory.

Paramètres
URL url

URL de la ressource à laquelle se connecter.

Proxy proxy

Proxy à utiliser lors de l'établissement de la connexion.

Renvoie
URLConnection

une instance java.net.HttpURLConnection implémentée par ce CronetEngine.

Génère
java.io.IOException

si une erreur se produit lors de l'ouverture de la connexion.

removeRequestFinishedListener

public void removeRequestFinishedListener(RequestFinishedInfo.Listener listener)

Supprime un écouteur de requête terminée.

Paramètres
RequestFinishedInfo.Listener listener

l'écouteur à supprimer.

removeRttListener

public void removeRttListener(NetworkQualityRttListener listener)

Supprime un écouteur des temps d'aller-retour s'il a été précédemment enregistré avec addRttListener. Cette méthode doit être appelée après l'ajout d'un NetworkQualityRttListener afin d'arrêter de recevoir des observations.

Paramètres
NetworkQualityRttListener listener

l'écouteur des délais aller-retour.

removeThroughputListener

public void removeThroughputListener(NetworkQualityThroughputListener listener)

Supprime un écouteur de débit. Cette méthode doit être appelée après l'ajout d'un NetworkQualityThroughputListener avec addThroughputListener afin d'arrêter de recevoir des observations.

Paramètres
NetworkQualityThroughputListener listener

l'écouteur du débit.

shutdown

public void shutdown()

Arrête le CronetEngine s'il n'y a aucune requête active, sinon génère une exception.

Ne peut pas être appelé sur le thread réseau (le thread sur lequel Cronet appelle Executor, qui est différent du thread sur lequel Executor appelle les rappels). Peut bloquer jusqu'à ce que toutes les ressources de CronetEngine aient été nettoyées.

startNetLogToDisk

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

Démarre la journalisation NetLog dans un répertoire spécifié avec une taille limitée. Le NetLog contient les événements émis par tous les CronetEngines actifs. NetLog est utile pour le débogage. Une fois la journalisation arrêtée stopNetLog, les données sont écrites dans netlog.json dans dirPath. Si la journalisation est interrompue, vous pouvez assembler manuellement les fichiers trouvés dans le sous-répertoire .inprogress à l'aide de https://chromium.googlesource.com/chromium/src/+/main/net/tools/stitch_net_log_files.py. Vous pouvez consulter le journal dans un navigateur Chrome en accédant à chrome://net-internals/#import.

Paramètres
String dirPath

Répertoire dans lequel le fichier netlog.json sera créé. dirPath doit déjà exister. Aucun fichier NetLog ne doit exister dans le répertoire. Si la journalisation est active, cette méthode est ignorée.

boolean logAll

true pour inclure les événements de base, les cookies utilisateur, les identifiants et tous les octets transférés dans le journal. Cette option présente un risque pour la confidentialité, car elle expose les identifiants de l'utilisateur. Elle ne doit être utilisée qu'avec le consentement de l'utilisateur et dans les situations où le journal ne sera pas public. false pour n'inclure que les événements de base.

int maxSize

Espace disque total maximal en octets qui doit être utilisé par NetLog. L'utilisation réelle de l'espace disque peut légèrement dépasser cette limite.

startNetLogToFile

public void startNetLogToFile(String fileName, boolean logAll)

Démarre la consignation NetLog dans un fichier. Le NetLog contient les événements émis par tous les CronetEngines actifs. NetLog est utile pour le débogage. Vous pouvez afficher le fichier dans un navigateur Chrome en accédant à chrome://net-internals/#import.

Paramètres
String fileName

le chemin d'accès complet au fichier. Il ne doit pas être vide. Si le fichier existe, il est tronqué avant le début de l'opération. Si la journalisation est active, cette méthode est ignorée.

boolean logAll

true pour inclure les événements de base, les cookies utilisateur, les identifiants et tous les octets transférés dans le journal. Cette option présente un risque pour la confidentialité, car elle expose les identifiants de l'utilisateur. Elle ne doit être utilisée qu'avec le consentement de l'utilisateur et dans les situations où le journal ne sera pas public. false pour n'inclure que les événements de base.

stopNetLog

public void stopNetLog()

Arrête la journalisation NetLog et vide le fichier sur le disque. Si aucune session de journalisation n'est en cours, cet appel est ignoré.

Méthodes protégées

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
)