Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android javax.net.ssl.SSLHandshakeException错误ssl但在邮递员中有效_Android_Web Services_Laravel_Ssl_Retrofit - Fatal编程技术网

Android javax.net.ssl.SSLHandshakeException错误ssl但在邮递员中有效

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

我有一个服务,我连接我的android应用程序没有问题,我在我的开发服务器上工作。 但是,当服务位于生产服务器中时,会出现如下图所示的错误

-在这两台服务器上,我测试邮递员并工作

在服侍的部分,我使用了Laravel

在Android应用中

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