rails中的POST请求

时间:2013-01-08 20:13:12

标签: ruby-on-rails ruby-on-rails-3 post http-post

我需要以一种有点奇怪(说法宽松)的格式创建一个帖子请求。要发送的确切请求应采用以下格式

  

https://xyz.com/ping?app_id=   123安培; adv_id = 345安培;事件=出售&安培; EVENT_DATA = “AMT = 30_USD; USER_ID = 204050”

很容易将帖子请求发送到以下格式的网址: -

  

https://xyz.com/ping?app_id=   123安培; adv_id = 345安培;事件=出售&安培; AMT = 30_USD&安培; USER_ID = 204050

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

Net::HTTP.post_form(URI.parse("http://xyz.com/ping"), params)

其中,params变量被适当填充(哈希)。

我应该对正常情况下的此更改进行哪些修改,尤其是考虑事件数据周围的双引号。

2 个答案:

答案 0 :(得分:1)

阅读并调整以下链接中的信息。经过它们之后,我可以推断出4种可能的方法:

  1. 使用Mechanize。见链接1
  2. 使用Net :: HTTP从您的控制器发出帖子请求。见链接2 - 3(第3个答案)。
  3. 发布包含哈希或数组的表单数据。见链接4 - 7
  4. 在表单中添加隐藏字段,其中包含额外数据。见链接8
  5. 使用params合并模式,即Link 9
  6. Using Ruby/Rails To Programmatically Post Form Data To Another Site

    Submitting POST data from the controller in rails to another website

    Post and redirect to external site from Rails controller?

    http://rails.nuvvo.com/lesson/6371-action-controller-parameters

    http://www.developer.com/lang/rubyrails/article.php/3804081/Techniques-to-Pass-and-Read-URL-Parameters-Using-Rails.htm

    http://guides.rubyonrails.org/action_controller_overview.htm(3.1哈希和数组参数,然后是关于请求伪造保护的第8节)

    Rails: How do I make a form submit an array of records?

    Ruby on Rails: Submitting an array in a form

    http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-hidden_field

    Send querystring params as part of form post

答案 1 :(得分:0)

您需要确保event_data参数已正确转义才能执行此操作。我很确定调用post_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)

这应该或多或少地为你做。