0

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 が無効になっていることが原因でした。ケースによっては、この問題に対処するための 2 つのアプローチが考えられます。1. バックエンド サーバーで TLSv1 を有効にします。2. 提案されているように、SSLEngine を更新して、モバイル アプリでより高い TLS バージョンをサポートします。

しかし、VOLLEY APROACH ではないので困難に直面しています。どうすればよいですか?

4

1 に答える 1