我正嘗試與Rails中的RESTful服務進行通信。它可以返回不同格式的數據,json和xml。有沒有一種特定的方式可以獲得我想要的數據類型。在Rails中更改HTTP標頭
該服務提到需要在HTTP標頭中設置ACCEPT。我不知道如何在Ruby中做到這一點。
目前我正在做這讓
response = Net::HTTP.get(URI.parse(<url>))
我對如何改變該呼叫的標頭信息不知道。任何幫助表示讚賞。謝謝。
我正嘗試與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