Android javax.net.ssl.SSLHandshakeException错误ssl但在邮递员中有效
我有一个服务,我连接我的android应用程序没有问题,我在我的开发服务器上工作。 但是,当服务位于生产服务器中时,会出现如下图所示的错误 -在这两台服务器上,我测试邮递员并工作 在服侍的部分,我使用了Laravel 及 在Android应用中Android javax.net.ssl.SSLHandshakeException错误ssl但在邮递员中有效,android,web-services,laravel,ssl,retrofit,Android,Web Services,Laravel,Ssl,Retrofit,我有一个服务,我连接我的android应用程序没有问题,我在我的开发服务器上工作。 但是,当服务位于生产服务器中时,会出现如下图所示的错误 -在这两台服务器上,我测试邮递员并工作 在服侍的部分,我使用了Laravel 及 在Android应用中 compile 'com.squareup.retrofit:retrofit:1.9.0' compile 'com.squareup.okhttp:okhttp:2.4.0' compile 'com.squareup.okhttp:okhttp
compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.squareup.okhttp:okhttp:2.4.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0'
@GET("/api/account/{accountId}/balance")
public void getBalanceAccount(
@Path("accountId") int accountId,
CancelableCallback<Balance> balanceCancelableCallback
);
public Gson providesGson() {
return new GsonBuilder()
.registerTypeAdapter(Date.class, new DateTypeAdapter())
.create();
}
private OkHttpClient myOkHttpClient(){
OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setReadTimeout(70 * 1000, TimeUnit.MILLISECONDS);
okHttpClient.setConnectTimeout(70 * 1000, TimeUnit.MILLISECONDS);
return okHttpClient;
}
public RestAdapter providesRestAdapter(Gson gson) {
return new RestAdapter.Builder()
.setClient(new OkClient(myOkHttpClient()))
.setLog(new AndroidLog("Retrofit"))
.setLogLevel(BuildConfig.DEBUG ? RestAdapter.LogLevel.FULL : RestAdapter.LogLevel.NONE)
.setEndpoint(BuildConfig.BASE_URL_STYLE)
.setConverter(new GsonConverter(gson))
.setRequestInterceptor(new SessionRequestInterceptorGetTokenAPI())
.build();
}
tks通读此信息,是否可以在没有钥匙的情况下操作@Roberto Artiles ASTELARESOLVED@Roberto ArtilesAstelarra@FilipNovid信任所有证书是一个非常糟糕的主意,在生产中永远不应该这样做。我猜你的API有自签名ssl证书,在这种情况下,你应该将该证书与你的android应用程序一起提供,以便它能够自己验证它。如果不想,可以使用硬编码域名检查serv证书。
private OkHttpClient myOkHttpClient(){
try{
OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setReadTimeout(70 * 1000, TimeUnit.MILLISECONDS);
okHttpClient.setConnectTimeout(70 * 1000, TimeUnit.MILLISECONDS);
final TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
@Override
public void checkClientTrusted(
java.security.cert.X509Certificate[] chain,
String authType) throws CertificateException {
}
@Override
public void checkServerTrusted(
java.security.cert.X509Certificate[] chain,
String authType) throws CertificateException {
}
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
} };
final SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
// Create an ssl socket factory with our all-trusting manager
final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
okHttpClient.setSslSocketFactory(sslSocketFactory);
return okHttpClient;
}catch (Exception e){
return null;
}
}