Sto cercando di ottenere il livello più basso di conteggio dei byte possibile con URLConnection. Sono già andato a contare i dati che passavano per i due stream, con CountingInputStream e CountingOutputStream dall'IO di Apache Commons, ma il conteggio dei byte che ottengo è uguale alla dimensione del corpo che sto inviando + la dimensione del corpo della risposta che sto ricevendo.Conteggio byte basso livello URLConnection
In HttpClient, avevo uno MeasuringClientConnManager con quello che presumo essere un conteggio di byte di livello più basso.
per ottenere il valore più esatto, sto confrontando il conteggio su quelle biblioteche con questi metodi, usando TrafficStats:
public static long getCurrentRx(Context context){
int uid = context.getApplicationInfo().uid;
return TrafficStats.getUidRxBytes(uid);
}
public static long getCurrentTx(Context context){
int uid = context.getApplicationInfo().uid;
return TrafficStats.getUidTxBytes(uid);
}
public static long getCurrentNetworkUsage(Context context){
return getCurrentRx(context) + getCurrentTx(context);
}
public static long getDiffNetworkUsage(Context context, long previousNetworkUsage){
return getCurrentNetworkUsage(context) - previousNetworkUsage;
}
utilizzare questi metodi ho ottenuto valori molto più stretto con HttpClient di URLConnection.
due domande:
Come andiamo URLConnection, non vedo l'OutputStream qualche indicazione dimensione in byte le intestazioni vengono inviati? Come mai vedo solo la dimensione del corpo? Dove sono le intestazioni? L'url chiama? I byte di risoluzione DNS?
C'è un modo per misurare ogni byte che una chiamata alla libreria URLConnection invia sull'interfaccia di rete? Il livello più basso, meglio è!