javax.net.ssl.SSLException:由peer关闭的连接(ON VOLLEY ANDROID< 4.4)

时间:2018-02-20 22:52:53

标签: android server android-volley backend sslexception

我有一个与Web服务器通信以检索某些数据的应用程序,该应用程序始终正常工作但现在显示此错误:

javax.net.ssl.SSLException:由同行关闭的连接

这只发生在我使用android< 4.4如果是6.0>它工作正常

 public void volleyJsonObjectRequest(String url){

    String  REQUEST_TAG = "com.androidtutorialpoint.volleyJsonObjectRequest";
    pDialog = new ProgressDialog(LoginActivity.this);
    pDialog.setMessage("Efetuando login..");
    pDialog.setIndeterminate(false);
    pDialog.setCancelable(false);
    pDialog.show();

    StringRequest postRequest = new StringRequest(Request.Method.POST, url,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {

                        json      = new JSONObject(response);
                        userId    = json.getString("userid");
                        userType  = json.getString("usertype");
                        dbversion = json.getInt("dbversion");
                        success   = json.getInt(TAG_SUCCESS);
                        message   = json.getString(TAG_MESSAGE);

                        if (pDialog != null && pDialog.isShowing()) {
                            pDialog.dismiss();
                        }

                        enviadoComSucesso();


                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    error.printStackTrace();
                    if (pDialog != null && pDialog.isShowing()) {
                        pDialog.dismiss();
                    }
                    userMsg("Não foi possível fazer conexão, por favor tenta novamente.");
                }
            }
    ) {
        @Override
        protected Map<String, String> getParams()
        {
            String usuario  = LoginActivity.this.userTemp;
            String password = LoginActivity.this.passTemp;

            Map<String, String> param = new HashMap<>();

            //ENVIO DOS DADOS DE AVALIAÇÕES
            param.put("usuario", usuario);
            param.put("password", password);


            return param;
        }
    };
    // Adding JsonObject request to request queue
    AppSingleton.getInstance(getApplicationContext()).addToRequestQueue(postRequest,REQUEST_TAG);
    postRequest.setRetryPolicy(new DefaultRetryPolicy(
            2000,
            DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
}

为什么现在显示此错误?我的所有应用程序现在都有此错误。当我看到这个错误时,我搜索并通过Sticky找到了这个解决方案

问题是由于TLSv1在后端被禁用。 根据具体情况,可以采用两种方法来解决此问题。  1.在后端服务器上启用TLSv1。  2.根据建议,更新SSLEngine以在移动应用程序上支持更高版本的TLS。

但我面临困境因为不是VOLLEY APROACH,我必须做什么?

1 个答案:

答案 0 :(得分:0)

我几个月前遇到过这个问题,解决方法是从后端启用TLSv1协议

检查

SSL protocols supported by devices lower than 4.4 "TLSv1" and "SSLv3"

SSL protocols supported by devices higher than 4.4 "TLSv1", "TLSv1.1" and "TLSv1.2"

您的Volley代码没有问题