【发布时间】:2017-07-26 09:30:07
【问题描述】:
我需要从以 Base64 形式向我提供 URL 的服务器获取一些数据。我通常使用 Faraday 连接 JSON API(这是返回格式)。这是一个基本示例,包括我得到的错误:
url = "data:application/json;base64,srighiuerghieurg..."
Faraday.get(url)
#=> URI::InvalidURIError: query conflicts with opaque
在任何浏览器中打开 URL 都会产生预期的 JSON,但是如何使用 Faraday 来完成这项工作?
让您了解请求的结构:
curl 'https://some.site.net/1/indexes/*/queries?some-agent=...' -H 'Accept: application/json' -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: en-US,en;q=0.5' -H 'Connection: keep-alive' -H 'Content-Type: application/x-www-form-urlencoded' -H 'DNT: 1' -H 'Host: some.site.net' -H 'Origin: https://another.site.com -H 'Referer: https://another.site.com/some/path' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240' --data '{"requests":[{"index":"some-name","params":"some=params"}]}'
【问题讨论】:
-
你能检查协议是否存在于 url (http/https)
-
@Sajin 不是。以上就是我得到的一切。
-
您是否尝试过从 Base64 解码 url,然后将该值用作 URL ?
-
@Nermin 我已经尝试了几个基于网络的解码器,但没有一个运气好。
-
在浏览器中适合您的网址是什么?
标签: ruby-on-rails ruby base64 faraday