2016-03-31 8 views
0

Я использую Retrofit 2.0.0-beta3 с OkHttp 3.0.0-RC1 и смотрю ниже тривиальной проблемы. Сервер HTTPS я подключаю к отлично работает с я использую CertificatePinner и OkHttp позвонить, но не работает с Retrofit вызова, даже если я устанавливаю же клиента в случае Retrofitretrofit okhttpclient with CertificatePinner

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

Это была ошибка в приложении, благодаря которому клиент был создан до кода ниже:

ProviderInstaller.installIfNeeded(getApplication()); 

Теперь заказ исправлен, и код работает нормально.

Смежные вопросы