在Rails中更改HTTP标头
我正尝试与Rails中的RESTful服务进行通信。它可以返回不同格式的数据,json和xml。有没有一种特定的方式可以获得我想要的数据类型。在Rails中更改HTTP标头
该服务提到需要在HTTP标头中设置ACCEPT。我不知道如何在Ruby中做到这一点。
目前我正在做这让
response = Net::HTTP.get(URI.parse(<url>))
我对如何改变该呼叫的标头信息不知道。任何帮助表示赞赏。谢谢。
我已完成了以这种方式工作
uri = URI(<domain>:<port>/<path>)
params = { <query_hash> }
headers = { <header_hash> }
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.path)
request.set_form_data(params)
request = Net::HTTP::Get.new(uri.path+ '?' + request.body , headers)
response = http.request(request)
其中query_hash
是哈希前所有查询:{ "q" => "cats" }
同样适用于header_hash
ex:{ "ACCEPT" => "text/json" }
+1真的很好,应该更有投票权。很难找到一个简单的实例。 – Eduardo 2014-01-01 13:15:04
首先,你必须创建HTTP会话对象:
http_session = Net::HTTP.new(URI.parse('...').to_s, 80)
然后你就可以定义HTTP标头,哈希,并通过它来获取方法,第二个参数:
http_session.get('/resources', {'Accept' => 'application/xml+xhtml'})
说我的网址是 'http://desktop.domain.com:28880/random/path?something = other' 当我尝试第一步时会引发错误..是否有我失踪? – 2010-06-04 06:04:22
第一步,您只需传递域名。没有路径,没有查询。所以你必须将其分解为'http://domain.tld'的形式 – Eimantas 2010-06-04 06:49:24
参数和标题可以这样设置。
uri = URI.parse(<url>)
uri.query = URI.encode_www_form('param1' => 'value1')
req = Net::HTTP::Get.new(uri.to_s, {'header1' => 'value1'})
res = Net::HTTP.new(uri.host, uri.port).request(req)
另外URL由路径和查询组成。 '/? ' –
2010-06-04 05:45:18