gpt4 book ai didi

ruby - 如何通过 TCPSocket 发送 HTTP 请求?

转载 作者:可可西里 更新时间:2023-11-01 02:45:45 24 4
gpt4 key购买 nike

我用 Ruby 编写了一个类,它充当 HTTP 客户端。代码很少,但我不使用 'net/http' 的原因是因为此方法允许我更好地控制发出的请求,而 HTTP 文档根本没有帮助。

无论如何,问题是套接字只能用于一个请求和响应。发送第二个或后续请求给我一个空响应。

例如:

  1. 打开与谷歌的连接
  2. 获取“/”
  3. 响应是 google.ca html
  4. 获取“/”
  5. 响应为空

我尝试关闭和打开请求之间的连接,但这只会减慢它的速度,并没有解决问题。我仍然得到空洞的回应。

那么这里有什么问题呢?

有没有一种方法可以让我检查 TCPSocket 对象是否有一个打开的连接,这样我就不会不小心打开一个新连接?

最佳答案

尝试:

require "socket"
host = "google.com"
port = 80
socket = TCPSocket.new host,port
request = "GET / HTTP/1.0\r\nHost:#{host}\r\n\r\n"
socket.print request
response = socket.read

这将返回 Google 的主页。如果您想一个接一个地发送请求,请将其更改为“HTTP/1.1”并读取响应,然后发送下一个请求。

关于ruby - 如何通过 TCPSocket 发送 HTTP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5864806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com