【问题标题】:Faraday POST request to getpocket API法拉第对 getpocket API 的 POST 请求
【发布时间】:2014-05-09 01:59:31
【问题描述】:

我正在尝试为我的 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" 标头,但我的所有尝试似乎都不起作用。

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

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

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

【问题讨论】:

    标签: http faraday pocket


    【解决方案1】:

    对于 1-liner,我尝试了以下方法,它以 JSON 格式返回。响应格式的键标头是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' })

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      • 1970-01-01
      • 2018-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多