2016-03-31 4 views
0

私は、Okhttp 3.0.0-RC1でRetrofit 2.0.0-beta3を使用しています。私はそれが原因これにアプリでバグだったCertificatePinnerとOkHttpコールを使用しますが、私はレトロフィットのインスタンスでCertificatePinnerでokhttpclientを改造する

String hostname = "hostname"; 
CertificatePinner certificatePinner = new CertificatePinner.Builder() 
     .add(hostname, "sha1/rNKiM/IsTzTMJ09jpMtPq4qP+Q8=") 
     .add(hostname, "sha1/hL8+j9RH89wlAW7eNDSS1ZlZ8Z8=") 
     .build(); 
OkHttpClient client = new OkHttpClient.Builder().certificatePinner(certificatePinner).build(); 

// This call works 
OkHttpClient client = new OkHttpClient.Builder().certificatePinner(certificatePinner).build(); 
Request request = new Request.Builder() 
    .url("https://" + hostname + "/api/me") 
    .addHeader("Authorization", "Bearer token") 
    .build(); 
okhttp3.Call call = client.newCall(request); 
//execute call returns 200 with response 

// This is not working and throwing SSL Connection Error 
retrofit = new Retrofit.Builder() 
     .baseUrl("https://" + hostname) 
     .addConverterFactory(GsonConverterFactory.create(gson)) 
     .client(client) 
     .build(); 
+0

「うまくいかない」とはどういう意味ですか? – Robert

+0

@Robertこれで修正されました。実行順序にバグがありました。私は下に私の答えを入れた – dhaval

答えて

0

を同じクライアントを設定していていてもレトロフィットの呼び出しでは動作しないと罰金作品に接続していHTTPSサーバクライアントは以下のコードより前に作成されました:

ProviderInstaller.installIfNeeded(getApplication()); 

注文は修正され、コードは正常に動作します。

関連する問題