如何解决在Ruby中使用RestClient传递编码的URL查询参数,结果不正确
我正在尝试访问私有API端点,该端点接受URL查询参数中的电话号码(包括国家/地区代码)。由于电话号码必须包含“ +”,因此必须对电话号码进行编码(即“ +”变为“%2B”)
当我这样称呼时:
RestClient.get("mytestserver.com/get_info?phone=%2B11231231234")
在ruby中,我得到一个无效的响应,表明它已击中服务器,但未正确读取该值。
在浏览器中的相同调用有效。
通过执行以下操作,我可以使用Net :: HTTP类使其工作:
uri = URI("http://mytestserver.com/get_info")
uri.query = URI.encode_www_form({phone: "+11231231234"})
response = Net::HTTP.get_response(uri)
但是我想看看是否有办法通过RestClient做到这一点?
解决方法
它是这样的。
phone = CGI.escape('+11231231234')
RestClient.get("localhost:3000/test?phone=#{phone}")
登录服务器:
Started GET "/test?phone=%2B11231231234" for ::1 at 2020-09-25 11:13:13 +0100
Processing by TestersController#index as */*
Parameters: {"phone"=>"+11231231234"}
Rendering testers/index.html.erb within layouts/application
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。