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).

Есть идеи заставить curl::easy не преобразовывать «+» в другое?


person damoiser    schedule 04.10.2012    source источник


Ответы (1)


Попробуйте использовать кодировку uri @token перед отправкой запроса. попробуйте метод 'u'

>> u "HK+rKsYMTbs2fjN+pLfPIj5wcjZp3IVQWuK5jW0iN/wKfkVgsQAjQ5+A1RvUF1Lp0lgdf1M="
=> "HK%2BrKsYMTbs2fjN%2BpLfPIj5wcjZp3IVQWuK5jW0iN%2FwKfkVgsQAjQ5%2BA1RvUF1Lp0lgdf1M%3D"
person hyxnat    schedule 04.10.2012
comment
Благодарю вас! Я следовал вашей линии, чтобы решить проблему, вместо метода u я использовал CGI::escape(@token), который решил проблему (для получения дополнительной информации: ruby-doc.org/stdlib-1.9.3/libdoc/cgi/rdoc /) - person damoiser; 04.10.2012