안드로이드 개발 팁 블로그

okhttp:3.0.2 -> okhttp3.1.2 업데이트 시 RealTrustRootIndex NullPointer에러 해결 법 본문

Android Tip

okhttp:3.0.2 -> okhttp3.1.2 업데이트 시 RealTrustRootIndex NullPointer에러 해결 법

tiii 2016. 2. 11. 11:47
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


OkHttp를 업데이트 하였는데 멀쩡히 되던 앱이 버그를 뿜으며 로그인이 되지 않았다.
에러로그를 확인하니 아래 같은 이유.

Caused by: java.lang.NullPointerException: Attempt to get length of null array
   at okhttp3.internal.tls.RealTrustRootIndex.<init>(RealTrustRootIndex.java:31)
   at okhttp3.internal.Platform.trustRootIndex(Platform.java:97)
   at okhttp3.internal.Platform$Android.trustRootIndex(Platform.java:271)
   at okhttp3.OkHttpClient.<init>(OkHttpClient.java:189)
   at okhttp3.OkHttpClient.<init>(OkHttpClient.java:60)
   at okhttp3.OkHttpClient$Builder.build(OkHttpClient.java:718)

이유는 비인증 인증서를 통과하는 코드 부분에서 getAcceptedIssuers의 리턴 값을 null처리 하였는데 이번에 버전 업을 하면서 해당 부분의 소스코드가 변경 된 것 같다.
(왜인지 모르겠으나 null에러 처리를 passby 안해 줌. 깃텁에는 수정했다라고 하니...다음 버전 업뎃에는 null 처리가 되어 있겠지.)

getAcceptedIssuers의 리턴 값을 아래와 같이 배열을 선언하면 정상 작동된다.

@Override
public X509Certificate[] getAcceptedIssuers() {
    X509Certificate[] x509Certificates = new X509Certificate[0];
    return x509Certificates;
}


Comments