我对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解决方案,而不会有另一个依赖。
此致 泰
答案 0 :(得分:1)
就URLConnection而言,这里有关于如何使其持久化的所有信息:Persistent Connections
如果可以,我建议您使用Apache httpcomponents,其中有许多示例:This one特别显示了持久连接的基础知识。