2016-02-12 5 views
1

Я очень новичок в Java и всей его славе.Как создать постоянное соединение https

Использование HttpsUrlConnection, я могу выполнять большинство операций REST без особых проблем. Однако, как мне заняться созданием постоянного соединения Https? Мне нужно это соединение для асинхронных сообщений с сервера. Есть ли простое java-решение, которое использует только пакет java.net? Я не ищу элегантное решение, просто что-то простое и работаю.

Вот что я до сих пор и не могу ничего получить от сервера. У меня есть статус 200 в ответ, но после этого ничего не получилось. Я проверил, что сервер фактически отправляет асинхронные сообщения. Я могу получить их с помощью другого инструмента. (с использованием запроса python с потоком)

До этого кода я успешно вошел в систему и получил все необходимые файлы cookie и authToken. Менеджер Cookie включен. ДополнительноAuthToken (conn) заботится о добавлении необходимого материала авторизации. Это доказало свою работу в другом вызове REST, поэтому я не подозреваю, что это проблема. Опять же, если авторизация была проблемой, у сервера не было бы возврата 200.

URL obj = new URL(url); 
    HttpsURLConnection conn = (HttpsURLConnection) obj.openConnection(); 
    conn.setRequestProperty("Connection", "keep-alive"); 
    conn.setRequestMethod("GET"); 
    additionalAuthToken(conn); 


    conn.setDoOutput(true); 
    conn.setDoInput(true); 

    if (conn.getResponseCode() != 200) { 
     throw new RuntimeException("Failed : HTTP error code : " 
       + conn.getResponseCode()); 
    } 

    System.out.println(url); 
    System.out.println(conn.getResponseMessage()); 

    BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
    while(true) { 

     String inputLine; 
     while ((inputLine = in.readLine()) != null) { 
      System.out.println(inputLine); 
     } 
     Thread.sleep(100); 
     System.out.println("Go around"); 
    } 

Возможно ли это? если нет, какова ваша рекомендация по достижению постоянного канала https? Я слышал о netty и некоторых других результатах Google. На данный момент я действительно надеюсь на простое решение java.net, не имея другой зависимости.

С уважением, Тай

+0

Следуйте на всякий случай, если кто-то ищет ответ. Он работает. Это действительно работает. Проблема в том, что я получил код в отдельной функции, которая закрывает поток и возвращает. Пока задайте вопрос, я перемещаю этот код здесь и не закрываю BufferReader. Итак, теперь я получаю устойчивое асинхронное сообщение. Таким образом, мораль этой истории заключается не в том, чтобы закрыть поток. Этот код действительно работает. – user2019842

ответ

1

Насколько идет URLConnection, вот вся информация о том, как сделать его стойким: Persistent Connections

Если вы можете, я рекомендую вам использовать Apache httpcomponents, для которых есть много примеров: This one в частности показывает основы постоянных соединений.