使用Ruby中的标头获取HTTPS GET请求

时间:2017-10-22 16:19:47

标签: ruby-on-rails ruby faraday

我有以下curl命令可以正常工作:

curl "https://api.multisafepay.com/v1/json/gateways" -X GET -H "api_key: e983177756a109e87aa5edbe05e0xxxxxxxxxxxx"

当我尝试在Rails中做同样的事情时(我尝试使用HTTP和法拉第,我总是得到一个包含以下内容的响应:

  

“error_info \”:\“无效的API密钥\”

这是我为法拉第所做的命令:

conn = Faraday.new 'https://api.multisafepay.com/v1/json/'
conn.headers = {'api_key' => 'e983177756a109e87aa5edbe05e0xxxxxxxxxxxx'}
conn.get 'gateways'

提供正确结果集的Curl命令有什么区别?

编辑:调试法拉第向我展示了这个方法:

def run_request(method, url, body, headers)

标题是否为零?我正在继续寻找原因。

2 个答案:

答案 0 :(得分:0)

我认为你没有给法拉第一个正确的网址。试试这样的事情

   conn = Faraday.new do |f|
     f.headers['api_token'] = <yourkey>
     f.request :url_encoded
   end
   resp = conn.get('https://api.multisafepay.com/v1/json/gateways')

答案 1 :(得分:0)

  require 'rest-client'
  require 'json'

  response = RestClient.get("https://api.multisafepay.com/v1/json/gateways", 
    {'api_key' => 'e983177756a109e87aa5edbe05e0xxxxxxxxxxxx'}
  )

  puts JSON.parse(response, { symbolize_names: true })

  #just in case try this one for header
  #{:content_type => :json, :accept => :json, :api_key => 'e983177756a109e87aa5edbe05e0xxxxxxxxxxxx'}