发出GET请求并接收参数

时间:2011-07-07 19:34:47

标签: ruby-on-rails ruby httpwebrequest chargify

我正在研究Ruby on Rails应用程序。我必须向以下内容发出GET请求:

  

的https:// [@subdomain] .chargify.com /订阅/ [@ subscription.id]上传.json

收到的回复将是json。我试图通过使用ruby的'net / http'库进行GET请求来实现这一点,我的代码如下:

res = Net::HTTP.get(URI.parse('https://[@subdomain].chargify.com/subscriptions/[@subscription_id].json')) 

但我收到的错误是:

  

错误的URI(不是URI?):   HTTPS:// [@subdomain] .chargify.com /订阅/ [@subscription_id]上传.json

我不确定我在哪里弄错了。任何建议或帮助将不胜感激。

由于

3 个答案:

答案 0 :(得分:1)

您的意思是#{@subdomain}而不是[@subdomain]吗?这必须在双引号"内,才能正确插值。

答案 1 :(得分:1)

现在您知道您的错误是您没有正确插入字符串。您应该指定#{@ subdomain}而不是[@subdomain],并且字符串周围需要双引号

您现在遇到的问题是您需要告诉http连接使用ssl 。我使用这样的东西..

http = Net::HTTP.new(uri.host, uri.port)

http.use_ssl = true

request = Net::HTTP::Get.new(uri.request_uri)

答案 2 :(得分:0)

两件事:

  1. 需要使用

    传递@subdomain的值
    #{@subdomain}
    
  2. 连接是ssl

    def net_http(uri)
    h = Net::HTTP.new(uri.host, uri.port)
    h.use_ssl=true
            h
    end
    
  3. 然后

         request=net_http(URI.parse("https://#       {@subdomain}.chargify.com/subscriptions/#{@subscription_id}.json"))
    

    执行获取操作

         request=net_http(URI.parse("https://#       {@subdomain}.chargify.com/subscriptions/#{@subscription_id}.json")).start do |http|
            http.get(URI.parse("whatever_url").path,{:params=>123})
            end