Сброс соединения после вызова getOutputStream

#java #sockets #outputstream #dataoutputstream #connection-reset

Вопрос:

Я должен попросить вас о любезной помощи в решении проблемы, которую я не могу решить… У меня есть следующий код:

       String https_url = "https://...";
      try {
        
        HttpsURLConnection connection = (HttpsURLConnection) new URL(https_url).openConnection();
        String query = "api_key=1234amp;portal_id=1234amp;username=" username;
        connection.setDoOutput(true);
        connection.setDoInput(true);
        connection.setRequestMethod("POST");
        connection.setRequestProperty("Content-Length", String.valueOf(query.length())); 
        connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");      
        DataOutputStream output = new DataOutputStream(connection.getOutputStream());       
        output.writeBytes(query);       
        output.close();
        DataInputStream input = new DataInputStream( connection.getInputStream() ); 
        String ret = "";
        for( int c = input.read(); c != -1; c = input.read() )  {
            ret  = (char)c ;
        }
        input.close(); 
        int code = connection .getResponseCode();
        String message = connection .getResponseMessage();
        System.out.println("Resp Code:" code); 
        System.out.println("Resp Message:"  message); 
        //...
 

Этот код работает уже пару лет, и еще несколько недель назад он работал нормально, а затем внезапно он начал получать
исключение java.net.SocketException: Сброс подключения
вскоре после линии
вывод = новый поток вывода данных(connection.getOutputStream());
Этот код запускается в веб-приложении Java и вызывается после нажатия кнопки на веб-странице.
Я не знаю, изменилось ли что-то на стороне сервера, но странно то, что если я помещу этот код в основной метод отдельного класса, экспортирую класс в исполняемый файл jar и запускаю jar из той же среды, в которой развернуто веб-приложение, этот код все еще работает, и я не получаю никаких исключений.
Есть какие-нибудь предложения? Еще раз спасибо вам
Шаг

Комментарии:

1. Хотя сброс соединения является ненормальным, это не то, что я бы назвал редкостью. Это может быть вызвано сбоями в сети или проблемами с сервером. Если у вас его не было много лет, вам очень повезло.

2. прежде всего, спасибо вам за ответ. Я не знаю, было ли у меня какое-либо сброшенное соединение за эти годы, но наверняка до нескольких недель назад этого никогда или почти никогда не случалось. Теперь это всегда происходит из веб-приложения…

3. Понял. На моем месте я бы использовал инструменты сетевого анализа, такие как, например, wireshark, запуск java с включенным выводом сетевой отладки и т. Д. чтобы увидеть, чем отличаются два способа, которыми вы пытались использовать код для подключения.

4. Дополнительные сведения об отладке сетевых проблем java см. в обсуждении свойства javax.net.debug .