Ruby Typhoeus请求:带引号的url

时间:2011-07-18 23:30:46

标签: ruby typhoeus

我在使用Typhoeus进行请求时遇到问题,因为我的查询需要在其中加上引号。

如果URl是

url = "http://app.com/method.json?'my_query'"
一切正常。但是,我尝试运行的方法只返回我想要的结果,如果查询是以下(我在浏览器中测试过):

url2 = "http://app.com/method.json?"my_query""

运行时

Typhoeus::Request.get(url2) 

我得到(URI :: InvalidURIError)

使用“\”转义引号不起作用。我怎么能这样做?

由于

3 个答案:

答案 0 :(得分:1)

您应该使用URI.encodeCGI.escape对URI进行正确编码,这样做会为您提供正确的网址:

http://app.com/method.json?%27my_query%27 # Single quotes
http://app.com/method.json?%22my_query%22 # Double quotes

答案 1 :(得分:0)

尝试:

require 'uri'
URI.encode('"foo"') 
=> "%22foo%22"

答案 2 :(得分:0)

在GET请求中传递json,引号等很棘手。在Ruby 2+中,我们可以使用Ruby的URI模块' escape'方法

> URI.escape('http://app.com/method.json?agent={"account":
{"homePage":"http://demo.my.com","name":"Senior Leadership"}}')

但我建议将其用作POST请求并将其作为邮件正文传递。