如何创建持久性https连接

时间:2016-02-12 17:12:59

标签: java http url https

我对Java及其所有荣耀都很陌生。

使用HttpsUrlConnection,我能够完成大部分REST操作,没有太多问题。 但是,如何创建持久的Https连接呢?我需要这个连接来自服务器的异步消息。有一个只使用java.net包的简单java解决方案吗?我不是在寻找优雅的解决方案,只是简单而有效的工作。

这是我迄今为止所拥有的,似乎无法从服务器接收任何内容。我有200个状态作为回应,但之后没有任何进展。我确实验证了服务器实际上是在发送异步消息。我可以使用不同的工具接收它们。 (使用带有流的python请求)

在此代码之前,我已成功登录并获得了所有必需的cookie和authToken。 Cookie管理器已启用。 additionalAuthToken(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和其他一些内容。现在,我真的希望有一个简单的java.net解决方案,而不会有另一个依赖。

此致 泰

1 个答案:

答案 0 :(得分:1)

就URLConnection而言,这里有关于如何使其持久化的所有信息:Persistent Connections

如果可以,我建议您使用Apache httpcomponents,其中有许多示例:This one特别显示了持久连接的基础知识。