Ruby:持久性HTTP客户端未收到第二个请求的响应

奥马尔·希亚兹(Omar Hijazi)

我正在尝试创建使用持久连接的HTTP客户端。当我发送我的第一个请求并得到我的第一个答复时,我的代码有效。但是,当我发送第二个请求时,我无法获得第二个响应。我不确定为什么吗?我在用C编码时遇到了相同的错误。

这是代码

require 'socket'
include Socket::Constants
socket = Socket.new( AF_INET, SOCK_STREAM, 0 )
sockaddr = Socket.pack_sockaddr_in( 80, 'www.google.com' )
socket.connect( sockaddr )

# This Works
socket.write( "GET / HTTP/1.0\r\n\r\n" )
results = socket.read

# This Works
socket.write( "GET / HTTP/1.0\r\n\r\n" )
# THIS DOESN'T WORK
results = socket.read

我不想使用Net :: HTTP之类的内置库。我需要做些什么才能使这项工作?

迈克尔·加斯基尔

您不能在同一连接上发出2个HTTP请求,除非您已告知服务器您希望这样做。这是如何HTTP persistent connection工作的。至少,您必须确保将其添加到您的请求标头中:

Connection: keep-alive

服务器对持久连接的支持有所不同,尽管服务器支持基本持久连接已变得很普遍。这是一个SO问题,询问“持久连接”到底是什么意思?

从此处开始,您将找到使持久连接正确工作所需的知识。您可能必须检查HTTP响应标头,以表明服务器将满足您的请求,或者您可能必须检查服务器在完成写入第一个响应时是否只是简单地关闭了连接。在通过持久连接的最终请求中,您还应该指定标头:

Connection: close

还要检查以下资源:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

请求的第二个会话上的Spring Integration TCP客户端连接问题

来自分类Dev

尝试重用HTTP连接来处理Keep-Alive标头时,通过从客户端读取第二个请求来阻止recv

来自分类Dev

线程服务器/客户端在第二个客户端加入后停止

来自分类Dev

Java Socket Server无法处理第二个客户端

来自分类Dev

Netty 服务器关闭第二个客户端连接

来自分类Dev

如果在我收到第一个请求的响应之前发出了第二个HTTP请求,会发生什么情况?

来自分类Dev

EntityExistsException在持久性上下文中使用同级类持久化带有@MapsId的第二个实体

来自分类Dev

第一个html helper生成客户端验证属性,而第二个不

来自分类Dev

Socket.io:第一个客户端在第二个连接上断开连接

来自分类Dev

仅当第二个客户端扭曲连接时,第一个才断开连接

来自分类Dev

WCF日志记录:客户端未收到响应

来自分类Dev

通过SSH运行持久性irc客户端

来自分类Dev

java http apache客户端未收到内容

来自分类Dev

如何禁止P2P GO接受另一个对等方(第二个客户端)连接?

来自分类Dev

如何在Win7上为OpenVPN客户端创建第二个TAP适配器

来自分类Dev

为什么来自同一IP的第二个客户端在显示页面之前有20秒的超时?

来自分类Dev

logstash http_poller第一个URL请求的响应应该输入到第二个URL的请求参数中

来自分类Dev

ZeroMQ C ++客户端未收到

来自分类Dev

ADM客户端未收到消息

来自分类Dev

Javascript Fetch API太快;在第二个HTTP(获取api)请求之前完成

来自分类Dev

得到第一个请求的响应后,调用第二个改造请求

来自分类Dev

用管道grep响应第二个命令?

来自分类Dev

如何使用HttpPost获取第二个响应

来自分类Dev

为什么使用默认代理凭据不会在407响应后导致自动第二个http请求?

来自分类Dev

nginx每隔第二个请求就会变慢

来自分类Dev

在ajax上发送第二个请求done()

来自分类Dev

第二个ajax请求被忽略

来自分类Dev

存储套件在第二个请求时崩溃

来自分类Dev

2嵌入式fancybox,第二个fancybox收到错误“无法加载请求的内容”

Related 相关文章

  1. 1

    请求的第二个会话上的Spring Integration TCP客户端连接问题

  2. 2

    尝试重用HTTP连接来处理Keep-Alive标头时,通过从客户端读取第二个请求来阻止recv

  3. 3

    线程服务器/客户端在第二个客户端加入后停止

  4. 4

    Java Socket Server无法处理第二个客户端

  5. 5

    Netty 服务器关闭第二个客户端连接

  6. 6

    如果在我收到第一个请求的响应之前发出了第二个HTTP请求,会发生什么情况?

  7. 7

    EntityExistsException在持久性上下文中使用同级类持久化带有@MapsId的第二个实体

  8. 8

    第一个html helper生成客户端验证属性,而第二个不

  9. 9

    Socket.io:第一个客户端在第二个连接上断开连接

  10. 10

    仅当第二个客户端扭曲连接时,第一个才断开连接

  11. 11

    WCF日志记录:客户端未收到响应

  12. 12

    通过SSH运行持久性irc客户端

  13. 13

    java http apache客户端未收到内容

  14. 14

    如何禁止P2P GO接受另一个对等方(第二个客户端)连接?

  15. 15

    如何在Win7上为OpenVPN客户端创建第二个TAP适配器

  16. 16

    为什么来自同一IP的第二个客户端在显示页面之前有20秒的超时?

  17. 17

    logstash http_poller第一个URL请求的响应应该输入到第二个URL的请求参数中

  18. 18

    ZeroMQ C ++客户端未收到

  19. 19

    ADM客户端未收到消息

  20. 20

    Javascript Fetch API太快;在第二个HTTP(获取api)请求之前完成

  21. 21

    得到第一个请求的响应后,调用第二个改造请求

  22. 22

    用管道grep响应第二个命令?

  23. 23

    如何使用HttpPost获取第二个响应

  24. 24

    为什么使用默认代理凭据不会在407响应后导致自动第二个http请求?

  25. 25

    nginx每隔第二个请求就会变慢

  26. 26

    在ajax上发送第二个请求done()

  27. 27

    第二个ajax请求被忽略

  28. 28

    存储套件在第二个请求时崩溃

  29. 29

    2嵌入式fancybox,第二个fancybox收到错误“无法加载请求的内容”

热门标签

归档