http - Faraday POST 请求 getpocket API

标签 http faraday pocket

我正在尝试为我的 Rails 应用程序的用户设置 OAuth 到 GetPocket ( http://getpocket.com )。

在 Pocket Authentication 文档 ( http://getpocket.com/developer/docs/authentication ) 的第 2 步中,我在构建精确的法拉第请求时遇到了困难。

以下请求有效:

Faraday.post('https://getpocket.com/v3/oauth/request', {consumer_key: 'key', redirect_uri: 'localhost:3000'})

但我希望响应采用 JSON 格式。我希望能够向请求添加“Content-Type”:“application/json” header ,但我所有的尝试似乎都不起作用。

有趣的是,当我执行以下操作时,请求失败(它返回 200 但不返回请求 token ,只返回整个 HTML 页面):

conn = Faraday.new('https://getpocket.com/v3/oauth/request')
conn.post('/', {consumer_key: 'key', redirect_uri: 'localhost:3000'})

如何向 Pocket API 发送 Faraday POST 请求以返回 JSON 格式的结果?

最佳答案

对于 1-liner,我尝试了下面的方法,它以 JSON 形式返回。关键 header 是 X-Accept响应格式而不是 Content-Type .

Faraday.post 'https://getpocket.com/v3/oauth/request', { 'consumer_key' => 'key', 'redirect_uri' => 'localhost:3000'}, { 'X-Accept' => 'application/json' }

当我在 IRB 中尝试时,响应是 JSON 格式的。

对于第二个代码部分,我相信当您在“/”处执行 POST 时,它只会在根域(即 getpocket.com)处执行 POST,从而返回 HTTP 200 和 getpocket 的整个 HTML 页面。 com 登录页面。从输出中,有一部分表明了这一点(见下文)

...snip... :url=>#<URI::HTTPS:0x000000028ab900 URL:https://getpocket.com/>, :request_headers=>{"User-Agent"=>"Faraday v0.8.9", "Content-Type"=>"application/x-www-form-urlencoded"}, ...snip..

无论如何,您可以尝试以下在 IRB 中测试时对我有用的方法。

conn = Faraday.new('https://getpocket.com') conn.post('/v3/oauth/request', {consumer_key: 'key', redirect_uri: 'localhost:3000'}, { 'X-Accept' => 'application/json' })

希望这有帮助。

关于http - Faraday POST 请求 getpocket API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23555508/

相关文章:

http - WADL 应用程序?

c# - Unity 3D Puts/Deletes http 方法

ios - http 服务器和 https 服务器之间的通信是否安全?

rest - 验证 REST API 的 HTTP POST 请求正文

ruby - 在法拉第传递 url 参数数组

php - 袖珍 API : how to obtain the Access token

google-chrome-extension - Chrome 扩展透明背景和圆角(如 Save To Pocket)

ruby - Faraday with net-http-persistent 使连接保持打开状态,导致 "Errno::EMFILE: Too many open files"

faraday - 如何使用法拉第捕获 Faraday::Error::ConnectionFailed 异常?

html - 我如何有条件地从稍后阅读服务(即 Instapaper、Pocket)中隐藏动态 Web 内容?