2012-07-13 123 views
4

現在我可以提出一個要求如下正確的語法:與其他客戶端GET請求

user = 'xxx' 
token = 'xxx' 
survey_id = 'xxx' 
response = RestClient.get "https://survey.qualtrics.com/WRAPI/ControlPanel/api.php?Request=getLegacyResponseData&User=#{user}&Token=#{token}&Version=2.0&SurveyID=#{survey_id}&Format=XML" 

不過應該做一些這方面的更好的方式。我已經試過了諸如:

response = RestClient.get "https://survey.qualtrics.com/WRAPI/ControlPanel/api.php", :Request => 'getLegacyResponseData', :User => user, :Token => token, :Version => '2.0', :SurveyID => survey_id, :Format => 'XML'</code> 

及其變型(字符串,而不是爲鍵,包括{和}符號,使得鍵下殼體,等),但沒有我試圖組合似乎工作。這裏的正確語法是什麼?


我嘗試了下面的第一個建議。它沒有工作。根據記錄,這個工程:

surveys_from_api = RestClient.get "https://survey.qualtrics.com/WRAPI/ControlPanel/api.php?Request=getSurveys&User=#{user}&Token=#{token}&Version=#{version}&Format=JSON" 

但這並不:

surveys_from_api = RestClient.get "https://survey.qualtrics.com/WRAPI/ControlPanel/api.php", :params => {:Request => 'getSurveys', :User => user, :Token => token, :Version => version, :Format => 'JSON'} 

(這裏我設置版本= '2.0')。

回答

11

您需要使用符號:params指定查詢字符串參數。否則,它們將用作標題。

示例使用參數:

response = RestClient.get "https://survey.qualtrics.com/WRAPI/ControlPanel/api.php", :params => {:Request => 'getLegacyResponseData', :User => user, :Token => token, :Version => '2.0', :SurveyID => survey_id, :Format => 'XML'} 
+1

感謝您的回覆。但它似乎並沒有爲我工作。你可以在上面的問題中看到我在編輯中所嘗試的內容。 – 2012-07-14 08:46:24

+0

@AmitKumarGupta這很奇怪。當我嘗試上面的兩個請求時,我得到兩個相同的請求。我使用mri 1.9.2-p318和rest-client 1.6.7。 – Pafjo 2012-07-14 10:15:36

+0

@Pafjo它似乎相反。我不能插入一個頭部參數:-(總是rest-client(1.7.2)似乎認爲所有參數都是「參數」 – 2014-11-28 10:42:36

3

我與REST的客戶端(1.7.2) 我需要把兩個PARAMS和HTTP頭同樣的問題。

我解決了這個語法:

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

RestClient.put url, params, headers 

我恨RESTClient實現:-)

1

rest-client api docs我看到headersHash,如果你想同時提供 - 標題和參數,可以那麼你需要在headers哈希中使用:params密鑰。例如

headers = { h1 => v1, h2 => v2, :params => {my params} }