Ruby Net::HTTP get 方法

liker · October 29, 2013 · Last by liker replied at October 30, 2013 · 7766 hits

在 irb 中能得到 uuid

irb(main):001:0> require 'net/http'
=> true
irb(main):004:0> uri = URI('http://192.168.1.239:3000/uuid_create')
=> #<URI::HTTP:0x000000024c7eb0 URL:http://192.168.1.239:3000/uuid_create>
irb(main):005:0> Net::HTTP.get(uri)
=> "{\"uuid\":\"3363c9b3-cf6e-445d-a95c-0e4034768dcd\"}"

在 action 中怎么就得不到呢?

require 'net/http'
class UuidCreateController < ApplicationController
    def uuid_test
    uri = URI("http://192.168.1.239:3000/uuid_create")
    #uri = URI('http://www.baidu.com')
    response = Net::HTTP.get(uri)
    puts response
  end
end

输出是什么?

#1 楼 @towonzhou 一直超时。报错超时。百度 uri 能运行。

项目运行 uri 为(http://192.168.1.239:3000/uuid_test)就不能运行。 换成另一个项目掉用这个接口时 就可以(http://192.168.1.239:3001/uuid) 本项目应该怎么调用 本项目提供的对外接口?

开发模式用的 webrick 只能接受一个 request,换 passenger,unicorn,thin 看看。

#3 楼 @liker 你是自己调用自己?那肯定会超时啊,直接调用方法不就可以了,何必要用 http 呢,
你的项目接受一个 request 后,会等到此 request 完成后才执行下一个 request, 你在第一个 request 里面又 request 自己,就会一直等,然后就超时了...

果然自己请求自己。。。重入了。。。。。

#5 楼 @towonzhou 恩 懂了 谢谢!

You need to Sign in before reply, if you don't have an account, please Sign up first.