Apache httpclient 4.x 如何通过HttpClient实现长链路或半长链路?

Apache httpclient 4.x 如何通过HttpClient实现长链路或半长链路?,apache-httpclient-4.x,android-async-http,Apache Httpclient 4.x,Android Async Http,我遇到了需要检查订单状态的情况。但是远程服务器不会很快返回响应,因为它会花费相对较长的时间 所以有人建议我使用HttpClient的长链接或半长链接。但我从来没有遇到过如此未知的情况。所以我想知道如何实现它。有人有什么好主意吗 如果你所谓的“长链接”或“半长链接”意味着“保持活力”,那么我想我找到了解决办法。有一个名为“Connection”的头文件,它有两个要选择的参数:“Keep Alive”或“close”。在HTTP1.0中,它默认为“关闭”。但在HTTP1.1中,“保持活动”是默认值。

我遇到了需要检查订单状态的情况。但是远程服务器不会很快返回响应,因为它会花费相对较长的时间

所以有人建议我使用HttpClient的长链接或半长链接。但我从来没有遇到过如此未知的情况。所以我想知道如何实现它。有人有什么好主意吗

如果你所谓的“长链接”或“半长链接”意味着“保持活力”,那么我想我找到了解决办法。有一个名为“Connection”的头文件,它有两个要选择的参数:“Keep Alive”或“close”。在HTTP1.0中,它默认为“关闭”。但在HTTP1.1中,“保持活动”是默认值。因此,如果要实现持久链接,需要在执行这些请求之前调用
HttpGet/HttpPost/HttpPut的
setRequestHeader(“Connection”,“Keep-Alive”)
方法

同时,也许你已经知道下面的内容,我希望它能帮助你:

Http Keep Alive似乎被严重误解。这是一个简短的例子 在1.0和1.1下描述其工作原理

HTTP/1.0 在HTTP 1.0下,没有关于keepalive如何操作的官方规范。本质上,它是附加在现有议定书上的。如果浏览器支持保持活动,它会向请求:连接:保持活动添加一个额外的标头。然后,当服务器收到此请求并生成响应时,它还会向响应添加一个标头:

连接:保持活动状态在此之后,连接不会断开,而是保持打开状态。当客户端发送另一个请求时,它使用相同的连接。这将继续进行,直到客户机或服务器决定对话结束,其中一个断开连接

HTTP/1.1 在HTTP1.1下,官方的keepalive方法是不同的。所有连接都保持活动状态,除非以下标题另有说明:连接:关闭连接:保持活动状态标题因此不再具有任何意义。此外,还描述了一个可选的Keep-Alive:header,但它的规格太低,没有意义。避免它。不可靠的HTTP是一种无状态协议——这意味着每个请求都独立于其他请求。保持活力并不能改变这一点

此外,不能保证客户端或服务器将保持连接打开。即使在1.1中,所有承诺都是您可能会收到连接正在关闭的通知。因此,keepalive是您编写应用程序时不应该依赖的东西。KeepAlive和POST HTTP 1.1规范规定,在POST正文之后,不允许有其他字符

它还声明“某些”浏览器可能不遵循此规范,在文章正文后放置一个CRLF。嗯嗯。据我所知,大多数浏览器都会使用带有CRLF的帖子正文。有两种方法可以解决这个问题:在POST请求的上下文中不允许keepalive,或者在一行中忽略CRLF本身。大多数服务器都是用后一种方式处理的,但是如果不进行测试,就无法知道服务器将如何处理它