2017-12-01 14 views
0

リクエストがハッシュコードを使用して同じかどうかを確認しました。Android - Retrofitで2つのリクエストが同じかどうかを確認するにはどうすればいいですか?

final Request original = chain.request(); 
MyLog.log(original.hashCode()); 

はしかし、彼らは異なっている:

Cannot inherit from final 'okhttp3.Request'

がそこに他の方法があります:私はokhttp3.Requestを拡張するクラスを作成しようとしました

245712287 144127529

が、私はエラーを得ました要求が同じかどうかを確認しますか?リクエストハッシュコードを返します

+0

ご利用の場合は何ですか? – azizbekian

答えて

0

作成されたヘルパークラス、

public class RetrofitUtil { 

    public static long hashcode(Request request){ 

     String url = request.url().url().toString(); 
     String body = getRequestBodyAsString(request.body()); 

     long result = url != null ? url.hashCode() : 0; 
     result = 31 * result + body != null ? body.hashCode() : 0; 
     return result; 

    } 

    public static String getRequestBodyAsString(final RequestBody requestBody) { 
     try { 
      final RequestBody copy = requestBody; 
      final Buffer buffer = new Buffer(); 
      if (copy != null) 
       copy.writeTo(buffer); 
      String requestBodyAsString = java.net.URLDecoder.decode(buffer.readUtf8(), "UTF-8"); 
      return requestBodyAsString; 
     } catch (final IOException e) { 
     } 
     return ""; 
    } 

} 
関連する問題