Ошибка при подключении при попытке получить объект JSON из RESTful API - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь получить информацию о пользователе с идентификатором 1 из API и записать ее в журнал, однако продолжаю сталкиваться со следующей ошибкой:

E/Rest response: com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: SSL handshake aborted: ssl=0x7c74f2dc88: I/O error during system call, Connection reset by peer

Я впервые работаю с RESTful API так что я немного неопытен. Я пытался найти решения этой проблемы при переполнении стека, но они, похоже, не работают. Я видел, что некоторые пользователи упоминают, что это часто встречающаяся ошибка для Android устройств ниже Android API 22 5.1 Lollipop, однако я использую Android 6.0 Marshmallow и все еще получаю эту ошибку.

Это мой код:

public class MainActivity extends AppCompatActivity {

String url = "https://ecoproduce.eu/api/User/1";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

        final SSLSocketFactory sslSocketFactory;
        try {
            sslSocketFactory = new TLSSocketFactory();
            HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory);
        } catch (KeyManagementException ignored) {

        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }

    RequestQueue requestQueue = Volley.newRequestQueue(this);

    JsonObjectRequest objectRequest = new JsonObjectRequest(
            Request.Method.GET,
            url,
            null,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    Log.e("Rest response", response.toString());
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.e("Rest response", error.toString());
                }
            }
    );

    requestQueue.add(objectRequest);
}

}

1 Ответ

0 голосов
/ 25 февраля 2020

Решается путем переключения строки URL-адреса с

String url = "https://ecoproduce.eu/api/User/1";

на

String url = "http://ecoproduce.eu/api/User/1";

и добавлением

android:usesCleartextTraffic="true"

в файл манифеста android. Ответ найден по следующей ссылке: Android 8: незашифрованный HTTP-трафик c не разрешен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...