Ruby on rails rails中的POST请求

Ruby on rails rails中的POST请求,ruby-on-rails,ruby-on-rails-3,post,http-post,Ruby On Rails,Ruby On Rails 3,Post,Http Post,我需要创建一个有点奇怪(宽宏大量地说)格式的post请求。要发送的确切请求应采用以下格式 123&adv_id=345&event=sale&event_data=“金额=30美元;用户_id=204050” 向以下格式的url发送post请求很容易:- 123&adv_id=345&event=sale&amt=30_USD&user_id=204050 这可以使用如下代码实现:- Net::HTTP.post_form(URI.parse("http://xyz.com/ping"),

我需要创建一个有点奇怪(宽宏大量地说)格式的post请求。要发送的确切请求应采用以下格式

123&adv_id=345&event=sale&event_data=“金额=30美元;用户_id=204050”

向以下格式的url发送post请求很容易:-

123&adv_id=345&event=sale&amt=30_USD&user_id=204050

这可以使用如下代码实现:-

Net::HTTP.post_form(URI.parse("http://xyz.com/ping"), params)
其中,正确填充了params变量(散列)


我应该做什么修改来解释正常场景的这种变化,特别是解释事件数据周围的双引号。

您需要确保正确转义
event\u data
参数才能执行此操作。我敢肯定,打电话给
post\u form
已经可以帮到你了

params["app_id"] = 123
params["adv_id"] = 345
params["event"] = 'sale'
params["event_data"] = '"amt=30_USD;user_id=204050"'
Net::HTTP.post_form(URI.parse("http://notify.tapsense.com/ads/ping"), params)

这或多或少会对您有所帮助。

您需要确保
事件数据
参数已正确转义才能执行此操作。我敢肯定,打电话给
post\u form
已经可以帮到你了

params["app_id"] = 123
params["adv_id"] = 345
params["event"] = 'sale'
params["event_data"] = '"amt=30_USD;user_id=204050"'
Net::HTTP.post_form(URI.parse("http://notify.tapsense.com/ads/ping"), params)

这或多或少会对你有所帮助。

阅读并调整以下链接中的信息。通过这些步骤,我可以推断出4种可能的方法:

  • 使用机械化。见链接1
  • 使用Net::HTTP从控制器发出post请求。参见链接2-3(第三个答案)
  • 包含哈希或数组的Post表单数据。见链接4-7
  • 将包含额外数据的隐藏字段添加到表单中。见链接8
  • 使用参数合并模式ie链接9
  • (第3.1节散列和数组参数,然后是关于请求伪造保护的第8节)


    阅读并调整以下链接中的信息。通过这些步骤,我可以推断出4种可能的方法:

  • 使用机械化。见链接1
  • 使用Net::HTTP从控制器发出post请求。参见链接2-3(第三个答案)
  • 包含哈希或数组的Post表单数据。见链接4-7
  • 将包含额外数据的隐藏字段添加到表单中。见链接8
  • 使用参数合并模式ie链接9
  • (第3.1节散列和数组参数,然后是关于请求伪造保护的第8节)


    您为什么要使用
    post\u表单
    ?这是否需要作为POST请求?GET请求实际上使用的是您想要的格式,而POST参数不是URL的一部分,而是嵌入在我需要发出POST请求的表单中(最好是因为我正在ping另一个带有一些数据的站点)。另外,即使我要发出get请求,这将如何工作?为什么要使用
    post\u表单
    ?这是否需要作为POST请求?GET请求实际上使用的是您想要的格式,而POST参数不是URL的一部分,而是嵌入在我需要发出POST请求的表单中(最好是因为我正在ping另一个带有一些数据的站点)。另外,即使我要发出get请求,这将如何工作?我应该如何测试实际形成的url,因为post请求是从服务器端触发的。@user523146:我看不到一种不进行模拟就可以完成的简单方法,因为您需要检查HTTPRequest的内部。你会使用哪种模拟框架?我不知道。我试着看看ActiveResource::HttpMock是否可以工作,但看起来不是这样。如果您可以使用RSpec,那么就可以工作。我会尝试一下,当我检查post_form方法时,它实际上对事件数据参数进行编码。因此,最终的url将被半编码(事件_数据中的“=”和“,”字符被%xx替换)。我应该如何测试实际形成的url,因为这是从服务器端触发的post请求。@user523146:我认为没有模拟就可以很容易做到这一点,因为您需要检查HTTPRequest的内部。你会使用哪种模拟框架?我不知道。我试着看看ActiveResource::HttpMock是否可以工作,但看起来不是这样。如果您可以使用RSpec,那么就可以工作。我会尝试一下,当我检查post_form方法时,它实际上对事件数据参数进行编码。因此,最终url将被半编码(事件_数据中的“=”和“,”字符将替换为%xx)。