2017-12-01 1 views
0

해시 코드를 사용하여 요청이 동일한 지 확인했습니다.안드로이드 - 2 개 요청이 Retrofit에서 동일한 지 확인하는 방법?

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 ""; 
    } 

} 
관련 문제