- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 HttpClient
POST 方法。我需要创建一次 HttpClient
并且应该使用 Keep Alive Connection。但我认为在我的情况下,它每次都会建立一个新的连接。
因此,我需要为 HttpClient
使用Keep Alive 连接。
这是我的代码 fragment ,如有任何帮助,我们将不胜感激。
ClientConnectionManager mgr = httpclient_recv.getConnectionManager();
hp = httpclient_recv.getParams();
httpclient_recv = new DefaultHttpClient(
new ThreadSafeClientConnManager(hp,mgr.getSchemeRegistry()), hp);
while (true) {
try {
java.util.logging.Logger.getLogger("org.apache.http.wire")
.setLevel(java.util.logging.Level.FINER);
java.util.logging.Logger.getLogger("org.apache.http.headers")
.setLevel(java.util.logging.Level.FINER);
System.setProperty("org.apache.commons.logging.Log",
"org.apache.commons.logging.impl.SimpleLog");
System.setProperty(
"org.apache.commons.logging.simplelog.showdatetime",
"true");
System.setProperty(
"org.apache.commons.logging.simplelog.log.httpclient.wire",
"debug");
System.setProperty(
"org.apache.commons.logging.simplelog.log.org.apache.http",
"debug");
System.setProperty(
"org.apache.commons.logging.simplelog.log.org.apache.http.headers",
"debug");
ByteArrayEntity bae = new ByteArrayEntity(byteData);
bae.setContentType(new BasicHeader(HTTP.CONTENT_TYPE,
"binary/octet-stream"));
httppost_recv.setHeader(HTTP.CONN_DIRECTIVE,HTTP.CONN_KEEP_ALIVE);
httppost_recv.setEntity(bae);
{
System.out.println("res b4 response");
response_recv = httpclient_recv
.execute(httppost_recv);
response_recv.getEntity().consumeContent();
System.out.println("res a4 response");
if (response_recv != null) {
byteArray = EntityUtils.toByteArray(response_recv
.getEntity());
playing = true;
}
}
}
还有 logcat 日志是:
12-03 10:07:29.466: I/System.out(1529): res b4 response
12-03 10:07:29.646: D/org.apache.http.wire(1529): >> "POST /ping HTTP/1.1[EOL]"
12-03 10:07:29.666: D/org.apache.http.wire(1529): >> "Connection: Keep-Alive[EOL]"
12-03 10:07:29.686: D/org.apache.http.wire(1529): >> "Content-Length: 1[EOL]"
12-03 10:07:29.705: D/org.apache.http.wire(1529): >> "Content-Type: binary/octet-stream[EOL]"
12-03 10:07:29.716: D/org.apache.http.wire(1529): >> "Host: 192.168.1.36[EOL]"
12-03 10:07:29.725: D/org.apache.http.wire(1529): >> "User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)[EOL]"
12-03 10:07:29.736: D/org.apache.http.wire(1529): >> "[EOL]"
12-03 10:07:29.746: D/org.apache.http.headers(1529): >> POST /ping HTTP/1.1
12-03 10:07:29.746: D/org.apache.http.headers(1529): >> Connection: Keep-Alive
12-03 10:07:29.756: D/org.apache.http.headers(1529): >> Content-Length: 1
12-03 10:07:29.756: D/org.apache.http.headers(1529): >> Content-Type: binary/octet-stream
12-03 10:07:29.765: D/org.apache.http.headers(1529): >> Host: 192.168.1.36
12-03 10:07:29.765: D/org.apache.http.headers(1529): >> User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)
12-03 10:07:29.776: D/org.apache.http.wire(1529): >> "[0x0]"
12-03 10:07:29.796: D/org.apache.http.wire(1529): << "HTTP/1.1 200 OK[EOL]"
12-03 10:07:29.805: D/org.apache.http.wire(1529): << "Server: gSOAP/2.8[EOL]"
12-03 10:07:29.816: D/org.apache.http.wire(1529): << "Content-Type: binary/octet-stream[EOL]"
12-03 10:07:29.826: D/org.apache.http.wire(1529): << "Content-Length: 2048[EOL]"
12-03 10:07:29.836: D/org.apache.http.wire(1529): << **"Connection: close[EOL]"**
12-03 10:07:29.887: D/org.apache.http.headers(1529): << HTTP/1.1 200 OK
12-03 10:07:29.896: D/org.apache.http.headers(1529): << Server: gSOAP/2.8
12-03 10:07:29.896: D/org.apache.http.headers(1529): << Content-Type: binary/octet-stream
12-03 10:07:29.906: D/org.apache.http.headers(1529): << Content-Length: 2048
12-03 10:07:29.906: D/org.apache.http.headers(1529): << **Connection: close**
12-03 10:07:29.916: I/System.out(1529): res a4 response
最佳答案
10:07:29.746: D/org.apache.http.headers(1529): >> Connection: Keep-Alive
您正在请求保活。
10:07:29.836: D/org.apache.http.wire(1529): << "Connection: close[EOL]"
服务器拒绝它。
你对此无能为力。
关于java - 如何保持HttpClient Connection Keep-Alive?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13677261/
HTTP Keep Alive是如何实现的?它在内部使用 TCP Keep Alive 吗?如果不是,服务器如何检测客户端是死是活? 最佳答案 我知道这是一个老问题,但仍然: HTTP Keep-Al
我尝试添加新标题的方法: request.Headers.GetType().InvokeMember("ChangeInternal", BindingFlags.Instance | Bi
我正在尝试实现一个功能来监听 door 1900 并捕获 Activity 消息和设备 ip,我尝试使用我发现的一些库,但我的应用程序一直在尝试启动应用程序时崩溃。 这是我的主要功能 pub
这是我的 haproxy.conf (haproxy 1.7.9) global log 127.0.0.1 local0 defaults retries 3
所以根据haproxy作者的说法,谁知道关于http的一两件事: Keep-alive was invented to reduce CPU usage on servers when CPUs we
我目前正在设计一个系统,我们需要知道用户是否仍然在线/登录。 该系统是基于 .Net 网络的,因此我们打算使用 AJAX/JSONP 代码来执行此操作,该代码每 2 分钟对服务器执行一次 ping 操
我正在为kong编写一个自定义插件。该插件将根据我的服务器转换请求/响应。我得到[info] 27#0: *588 client closed keepalive connection . 经过一番
如果一个网络服务器服务于多个虚拟主机(可以由客户端在HTTP请求头Host中选择)并且支持Keep-Alive,客户端是否允许使用不同的 Host header 通过同一连接发送后续请求? 最佳答
我正在查看 HTTP 1.1 spec 并且正在查看规范中与“Connection” header 相关的部分。我注意到为“连接” header 指定的唯一标记是“关闭”。经过一番挖掘后,我发现许多服
HTTP/1.1 服务器默认使用 Connection header 的 Keep-Alive 设置。为什么那么大多数浏览器是否在他们的请求中包含 Connection: Keep-Alive ,即使
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
据我所知,在 TCP 套接字上保持事件状态有助于了解套接字是否刚刚打开以及两个套接字之间的连接是否实际上处于事件状态。所以,我有几个关于 Winsocks2 中 Keepalive 用法的问题想咨询一
全部, 我有一个网站,该网站使用经典的 ASP 和 Crystal 报表根据用户在网页中的输入(查询后端数据库)生成报告。如果报告运行时间超过 30 分钟,则位于客户端和 Web 服务器之间的防火墙将
基本上,我想让 router-view 中的 2 个组件保持事件状态,并且它可以工作,但是,我不知道我是否做对了。 users 和 data 是路由名称。这是正确的方法吗? keep
我使用 ruby1.9.2p180(2011-02-18 修订版 30909)i686-linux。 Fiber#alive? 返回未定义的错误: fiber = Fiber.new{puts '
我在 macOS 本地主机上运行用 Go (1.12) 编写的客户端和套接字服务器。 服务器在 net.TCPConn 上设置 SetKeepAlive 和 SetKeepAlivePeriod。 客
用过 vue-element-admin 的同学一定很清楚,路由的配置直接关系侧边栏导航菜单的展示,也得益于这种设计思路,几乎大部分后台框架都采用这个方案,当然也包括了我写的 Fantastic-a
在项目开发过程中加载、启动、下载项目难免会用到进度条,如何使用Python实现进度条呢? 这里为小伙伴们分享四种Python实现进度条的库:Progress库、tqdm库、alive-progre
基本上,就是它所说的。 有什么意义? ?这听起来可能很愚蠢,但我认为其目的是缓存与当前未在 DOM 中呈现的组件关联的数据。根据this bug/issue , 专门设计用于在从页面中删除元素时删
Jmeter 中保持事件选项的用途是什么,它的工作原理是什么? 我使用 Jmeter 3.0 进行了性能测试 在我录制的脚本中保持事件选项被选中。 所以我在我的真实测试脚本中使用了保持事件选项 如果我
我是一名优秀的程序员,十分优秀!