标题

时间:2018-01-09 19:37:23

标签: ruby api

我正在尝试用Ruby编写一些脚本来与Guild Wars 2的API(https://api.guildwars2.com/v2)进行交互

在该页面的底部有以下信息:

  

需要身份验证的API需要传递属于的API密钥   要访问的帐户。 API密钥必须具有适当的权限   与之关联(/ v2 / tokeninfo可用于检查密钥权限)。按键   可以在ArenaNet帐户网站上生成。

     

可以通过查询参数或HTTP标头传递密钥。我们的服务器   不支持预先发出的CORS请求,因此如果您的应用程序正在运行   在用户的浏览器中,您需要使用查询参数。

     

要通过查询参数传递,请在您的请求中添加“?access_token =”。

     

要通过HTTP标头传递,请包含“身份验证:承载(API密钥)”。

我现在正在使用的代码如下:

class Gw2
  attr_reader :response, :uri, :http

  def initialize
    @uri = URI.parse('https://api.guildwars2.com/v2')

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

    @http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  end

  def wallet
    path ="/v2/account/wallet"
    @response = @http.get(path).body
  end
end

我不知道如何设置它。

1 个答案:

答案 0 :(得分:0)

这是一个小例子:

require 'net/http'
require 'uri'

url = URI.parse('http://some.url')

req = Net::HTTP::Get.new(url.path)
req.add_field('X-Forwarded-For', '0.0.0.0')
# For content type, you could also use content_type=(type, params={})
# req.set_form_data({'query' => 'search me'})
# req['X-Forwarded-For'] = '0.0.0.0'

res = Net::HTTP.new(url.host, url.port).start do |http|
  http.request(req)
end

puts res.body