我正在为我的http客户端使用URLConnection。使用Wireshark,我可以看到设置https连接最多可能需要4秒钟。因此,如果可能,我想池连接以避免https设置时间。我的流程如下:
public String work(String url) {
HttpURLConnection conn = (HttpURLConnection)(new URL(url)).openConnection();
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String response = br.readResponseFromConnection();
conn.disconnect();
br.close();
return response;
}
public void onBtnClickTest() {
work("https://example.com/echo?param=abc");
}
通过上面的设置,我点击了我的测试按钮两次,但看起来每次调用都完成了https设置,这让我认为连接并没有真正被重用(至少不是我的方式)希望)。通过Wireshark,我看到如下内容:
// first click
Client Hello
Server Hello
Certificate, Server Hello Done
Client Key Exchange, Change Cipher Spec, Encrypted...
Encrypted Handshake Message...
Application Data
// second click, 20 seconds after my first click.
Client Hello
Server Hello
Certificate, Server Hello Done
Client Key Exchange, Change Cipher Spec, Encrypted...
Encrypted Handshake Message...
Application Data
但是,如果我在<<< 5秒,看起来第二次运行时跳过了握手,我立即看到“应用程序数据”消息。我想我记得在某个地方读过URLConnection只能将连接集中在一起5秒钟。
所以我的问题:
谢谢
答案 0 :(得分:0)
您可以使用Keep-Alive标头属性来保留任何http连接。以下是关于Http Keep-alive Http Keep Alive
的文档部分您可以做些什么来帮助Keep-Alive 提供您正在寻找的确切信息。在SO中快速搜索给了我另一个链接,就像你的问题一样。