Как решить javax.net.ssl.SSLHandshakeException: соединение закрыто одноранговым - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь отправить http-запрос, используя залп, но получаю сообщение об ошибке

javax.net.ssl.SSLHandshakeException: соединение закрыто узлом

Я гуглюсь и пробую несколько предложений, но ни одно из них не решает мою проблему. пожалуйста помогите

Ниже приводится код, который я использую

public class volley {

    static RequestQueue queue=null;
    public static String TAG = "MY_VOLLEY";
    volley(final String URL,
           final String Text
           final Context context
    ){
        helper.log(TAG,"Started Loading");
        // Instantiate the RequestQueue.
        if(queue==null) {
           queue = Volley.newRequestQueue(context);
        }
        // Request a string response from the provided URL.
        StringRequest stringRequest = new StringRequest(
                Request.Method.POST, URL, new Response.Listener<String>()
        {
            @Override
            public void onResponse(String response) {

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

                }
                return;
            }
        }
    ){
            @Override
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<String, String>();
                try {
                    params.put("message",Text);
                    params.put("from",From);
                } catch (Exception e) {
                    helper.log(TAG, "Error, hash map failed");
                }
                return params;
            }
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> params = new HashMap<String, String>();
                params.put("Content-Type", "application/x-www-form-urlencoded");
                return params;
            }
    };
        // Add the request to the RequestQueue.
        queue.add(stringRequest);
        return;
    }
}

1 Ответ

0 голосов
/ 21 июня 2019

С точки зрения отладки JSSE - это боль в ...

Скорее всего, рукопожатие завершается неудачно, и JSSE большую часть времени показывает только последнюю проблему, то есть то, что сервер закрывает соединение. Довольно часто сервер сообщает вам о проблеме в предупреждающем сообщении TLS, но это не отображается в сообщении об исключении.

Если у вас установлен Wireshark или что-то подобное, самый простой способ - запустить сеанс и посмотреть на TLS-записи (Wireshark показывает их довольно красиво, поэтому легко распознать пакет ошибок, содержащий код ошибки и значение ).

Если у вас еще нет этого инструмента, вы можете активировать отладку SSL и просмотреть сообщения на STDOUT. Имейте в виду, что их немного трудно читать, если вы не знакомы с TLS и - поскольку это глобальная настройка - вы должны убедиться, что ваши тесты выполняются, когда не установлено другое TLS-соединение, иначе вы получите смешанные выводы. Чтобы включить отладку TLS-рукопожатия, установите системное свойство -Djavax.net.debug=ssl:handshake

...