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 ではないので困難に直面しています。どうすればよいですか?