我需要以一种有点奇怪(说法宽松)的格式创建一个帖子请求。要发送的确切请求应采用以下格式
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变量被适当填充(哈希)。
我应该对正常情况下的此更改进行哪些修改,尤其是考虑事件数据周围的双引号。
答案 0 :(得分:1)
阅读并调整以下链接中的信息。经过它们之后,我可以推断出4种可能的方法:
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://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
答案 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)
这应该或多或少地为你做。