0

这是一个网址

http://192.168.1.2:1218/?name=verify_code_string_queue&opt=get&auth=verify_code_string_queue

它将返回一个字符串或状态码,如 SQS_GET_END

现在我需要在 url 返回一个字符串时打破循环,或者继续阻塞。

这是我的代码

require 'net/http'
require 'open-uri'
loop do
  codeText = open("http://192.168.1.2:1218/?name=verify_code_string_queue&opt=get&auth=verify_code_string_queue") do |repo|
    repo.read
  end
  if codeText != "SQS_GET_END"
    break
  end
end

但它不起作用,输出无法分配请求的地址 - connect(2) (Errno::EADDRNOTAVAIL)。请告诉我如何解决,谢谢

4

1 回答 1

0

问题是您在短时间内执行了太多请求。这将导致Errno::EADDRNOTAVAIL错误。您可以sleep在循环中添加一个,以限制您发出的请求数。

像这样的东西:

require 'net/http'
require 'open-uri'
loop do
  codeText = open("http://192.168.1.2:1218/?name=verify_code_string_queue&opt=get&auth=verify_code_string_queue") do |repo|
    repo.read
  end
  if codeText != "SQS_GET_END"
    break
  end
  sleep 1 # <= sleep for one second
end
于 2012-12-28T10:44:02.527 回答