2012-07-13 78 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} }