34

我有其余的客户端 gem,我正在定义一个这样的请求:

url = 'http://someurl'
request =  {"data" => data}.to_json
response = RestClient.post(url,request,:content_type => :json, :accept => :json)

但是我需要将 HTTP 标头设置为某些东西。例如 API 密钥。这可以在 curl 中完成:

curl -XHEAD -H x-auth-user: myusername -H x-auth-key: mykey "url"

在红宝石中做到这一点的最佳方法是什么?使用这个宝石?或者我可以手动进行以获得更多控制权。

4

4 回答 4

51

第三个参数是标头哈希

你可以做你想做的事:

response = RestClient.post( 
  url, 
  request,
  :content_type => :json, :accept => :json, :'x-auth-key' => "mykey")
于 2012-08-28T14:40:23.310 回答
22

你也可以这样做

RestClient::Request.execute(
   :method => :get or :post,
   :url => your_url,
   :headers => {key => value}
)
于 2013-11-29T06:46:03.043 回答
4

我对 Rest-Client (1.7.2) 有同样的问题,我需要同时放置参数和 HTTP 标头。

我用这个语法解决了:

params = {id: id, device: device, status: status}
headers = {myheader: "giorgio"}

RestClient.put url, params, headers

我讨厌 RestClient :-)

于 2014-11-28T11:00:00.387 回答
0

如果PUT不允许,我们可以在POST. 粗体标题。这对我有用:

act_resp = RestClient.post url, req_param, **:content_type => :json, :method => :put**

于 2016-05-26T07:57:34.470 回答