【问题标题】:Rails use of httparty to parse the JSON to external URLRails 使用 httparty 将 JSON 解析为外部 URL
【发布时间】:2020-07-22 06:44:35
【问题描述】:

在 Rails 应用程序中,必须将用户重定向到外部站点以进行外部处理。控制器生成一个有效的 JSON 字符串和一组标头:

@result = HTTParty.post(
  "https://some-test.supertester.com/checkout",
  :verify => false, 
  :body => JSON.parse(@payment).to_json,
  headers: {
    'Content-Type' => 'application/json', 
    'X-TimeStamp' => "#{Time.now.to_i}",
    'X-API-ID:' => "#{@api_id}",
    'X-API-Signature:' => "#{@api_signature}"
  },
  timeout: 20
)    

用户通过以下方式启动此操作:

<%= link_to t('proceed'), data_url_cart_path(id: @existing_cart.id), class: 'button' %>

其控制器操作生成上述 JSON 字符串并调用。

但是,当目标是将用户重定向到具有定义的标头和有效负载的上述 URL 时,Rails 会尝试使用具有相同操作名称的视图来响应此操作(甚至生成带有 format.json { head :no_content } 的空白)。

如何做到这一点?

【问题讨论】:

  • 我认为问题出在你的方法上。如果您需要向此 URL 发送标头,则不能将用户重定向到该 URL,因为在重定向时您无法发送标头。

标签: ruby-on-rails httparty


【解决方案1】:

HTTParty 正在使用json 有效负载发出网络请求。在这种情况下,@response 将是来自网络请求的响应。如果您调用 puts @response.parsed_response.inspect,您将在运行 Rails 服务器的终端窗口中看到返回的 json 和所述响应。

我认为您可能根本不需要将用户重定向到外部站点,而是检查响应以查看您尝试执行的操作是否成功并在您自己的应用程序中进行处理。

【讨论】:

    猜你喜欢
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    相关资源
    最近更新 更多