Ruby Net::HTTP get 方法

liker · 2013年10月29日 · 最后由 liker 回复于 2013年10月30日 · 7777 次阅读

在 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 恩 懂了 谢谢!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号