【问题标题】:Access Response from HTTParty Request来自 HTTParty 请求的访问响应
【发布时间】:2017-11-21 12:18:32
【问题描述】:

我正在通过 HTTParty 从外部 API 获取令牌。

我的电话是这样的:

token_request = HTTParty.post(@url, body: token_payload.to_json, headers: { 'Content-Type' => 'application/json' }) 

我收到以下 JSON:

{"token":"TBpdV20Fsdbycgmib2B8ZhasVnRb","expiration_utctimestamp":"23123202226","error_code":0,"error_message":null}

我现在想将令牌值传递给我的下一个请求。

如何将“TBpdV20Fsdbycgmib2B8ZhasVnRb”位放入变量中?我的猜测是这样,但不起作用:

token = token_request[:token]

谢谢

【问题讨论】:

  • token_request['token'] 怎么样?正如您在输出中看到的,键是字符串,而不是符号。
  • 如果我将 :token 更改为 'token' 它只会在终端中返回字符串:'token'。不过,我想要的是价值,而不是钥匙。
  • 好的,那么token_request 变量究竟包含什么?

标签: ruby-on-rails json parsing httparty


【解决方案1】:

HTTParty 包含将解析后的 JSON 作为哈希返回的辅助方法(如果服务器使用适当的标头响应)。因此您可以通过以下方式访问令牌:

token = token_request.parsed_response['token']

在这种特殊情况下的另一种方式(服务器不返回application/json 标头):

token = JSON.parse(token_request.to_s)['token']

【讨论】:

  • 谢谢内特。我都试过了。在第一个示例中,我得到相同的结果:字符串 'token' 但不是值。在第二个示例中,我得到以下信息:Error message
  • 请注意这是我正在做的 HTTParty POST。不确定这是否有任何区别。
  • 请告诉我puts token_request.body 的控制台输出。屏幕截图很难阅读和复制。似乎服务器以无效的 JSON 响应
  • 这是我在终端中得到的:"{\"token\":\"TBpcbV20FFSwbycgmib2B8Zh2MhnwGVnRb\",\"expiration_utctimestamp\":\"1511302226\",\"error_code\":0 ,\"error_message\":null}"
  • puts token_request.parsed_response 是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-10
相关资源
最近更新 更多