2012-10-04 33 views
1

当令牌有一个“+”,而另一个服务器不能识别请求时,我有一个问题向外部服务器发送请求。我认为这是一个编码问题(对不起,我是新手),但我不知道该怎么做。rails - curb:使用“+”编码问题发送请求和令牌

这是我的代码

 req = Curl::Easy.new do |curl| 
     curl.url = "https://blabla.com/bla?token=#{@token}" 
     curl.headers['Content-type'] = 'application/json' 
    end 
    req.perform 
    puts req.body_str 

当令牌是类似于:S6ps1YSMC6xaRusfSH4aBg1RTm2/U1u1ng/hZSmGGTGX12AcL // Q33ri7Wlkl1Vjg4j/ZDM =

这是确定的,但如果是: HK + rKsYMTbs2fjN + pLfPIj5wcjZp3IVQWuK5jW0iN/wKfkVgsQAjQ5 + A1RvUF1Lp0lgdf1M =

响应是403(禁止)。

我已经在文档中搜索,但我什么也没找到(https://github.com/taf2/curb)。

任何想法强制卷曲::容易不能将“+”转换成另一种东西?

回答

2

在发送请求之前尝试uri编码@token。试试'u'方法

>> u "HK+rKsYMTbs2fjN+pLfPIj5wcjZp3IVQWuK5jW0iN/wKfkVgsQAjQ5+A1RvUF1Lp0lgdf1M=" 
=> "HK%2BrKsYMTbs2fjN%2BpLfPIj5wcjZp3IVQWuK5jW0iN%2FwKfkVgsQAjQ5%2BA1RvUF1Lp0lgdf1M%3D" 
+0

谢谢!我已经按照你的路线来解决问题,在我已经使用CGI :: escape(@token)解决问题的u方法的地方(更多信息:http://www.ruby-doc.org/stdlib -1.9.3/libdoc/CGI /的RDoc/CGI.html#方法-C-逃逸) – damoiser

相关问题