2017-02-27 3 views
2

Visual StudioでAndroid Xamarinアプリでデータ使用量を測定するにはどうすればよいでしょうか?Android Xamarinアプリでのデータ使用量を測定する方法は?

呼び出されたリクエストごとにどれだけのデータが転送されたかを知りたいと思います。 私はXamarin Profilerを探していましたが、データ使用に関する情報はありません。

ありがとうございました。あなたが使用することができ

+0

どのような方法でリクエストしていますか?通常、ウェブリクエストの長さとウェブレスポンスの長さを確認できます。 –

答えて

2

一つのアプローチは、ネットワークトラフィック

enter image description here

enter image description here

を見るためにAndroidデバイスモニタ経由でカスタムハンドラとログにHttpClientを使用している場合、代わりにあなたはあなたの要求を包むことができ要求ペイロードのサイズ:

public class RequestLoggerHandler : HttpClientHandler 
{ 

#if DEBUG 
    protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) 
    { 
     var stopwatch = Stopwatch.StartNew(); 
     HttpResponseMessage response = null; 
     var headers = request.Headers; 
     var responseString = string.Empty; 
     var requestString = string.Empty; 
     var outputStringBuilder = new StringBuilder(); 

     const string LINE_ENDING = "==================================================================================================="; 
     const string SECTION_ENDING = "---------------------------------------------------------------------------------------------------"; 

     try 
     { 
      if (request.Content != null) requestString = await request.Content?.ReadAsStringAsync(); 
      response = await base.SendAsync(request, cancellationToken); 
      responseString = await response.Content?.ReadAsStringAsync(); 

      outputStringBuilder.AppendLine(LINE_ENDING); 

      // Headers 
      outputStringBuilder.AppendLine("REQUEST HEADERS:"); 
      foreach (var header in headers) 
       outputStringBuilder.AppendLine($"HEADER: {header.Key}: {header.Value?.ToList()?.FirstOrDefault()}"); 
      outputStringBuilder.AppendLine(SECTION_ENDING); 

      // Parameters 
      outputStringBuilder.AppendLine("REQUEST PARAMS:"); 
      outputStringBuilder.AppendLine(requestString); 
      outputStringBuilder.AppendLine(SECTION_ENDING); 

      // Response 
      outputStringBuilder.AppendLine("RESPONSE:"); 
      outputStringBuilder.AppendLine(responseString); 
      outputStringBuilder.AppendLine(SECTION_ENDING); 

      return response; 
     } 
     finally 
     { 
      stopwatch.Stop(); 
      var totalSize = 0L; 

      if (response != null) 
      { 
       var bodylength = response.Content.Headers.ContentLength; 
       var headerlength = response.Headers.ToString().Length; 
       totalSize = bodylength.GetValueOrDefault() + headerlength; 
      } 

      outputStringBuilder.AppendLine(string.Format("REQUEST [{0}:{1}] Time:{2}| Size:{3}| HTTP-CODE:{4}", 
       request.Method.ToString(), 
       request.RequestUri, 
       stopwatch.Elapsed.ToString("ss\\.fff"), 
       totalSize.ToPrettyByteSize(), 
       response?.StatusCode.ToString() ?? "No Internet Connectivity")); 

      outputStringBuilder.AppendLine(LINE_ENDING); 

      Debug.WriteLine("\n" + outputStringBuilder); 
     } 
    } 
#endif 
} 

出力wあなたは時間とサイズを含むあなたのリクエスト/レスポンスの読みやすいレポートを作成します。VSColorOutput extensionあなたができるのは、要求/応答のサイズだけであれば、このコードを単純化することができます。

enter image description here

関連する問題