【问题标题】:How to rewrite Post request in javascript in Ruby with Httparty如何使用 Httparty 在 Ruby 中用 JavaScript 重写 Post 请求
【发布时间】:2017-05-05 00:05:00
【问题描述】:

所以我有 JavaScript 中的代码,我试图用 Ruby 重写,但我不知道如何传递这些参数并以与我在 JavaScript 中使用 Ruby 相同的方式解析响应

javascript代码:

$.post(urlToPostTo, {
    name: nameToPost,
    captchatext: "",
    index: "0"
}).done(function (response) {
    var responseHTML = $.parseHTML(response);
    var tables = $(responseHTML).find("td");
    self.pA = $(tables[2]).text();
    self.dA = $(tables[3]).text();
    self.mR = $(tables[4]).text();
    deferred.resolve(data);
}).fail(function (error) {
    deferred.resolve(data);
});

有没有办法在 Ruby 中做到这一点(可能使用 HTTParty)?

【问题讨论】:

标签: javascript ruby-on-rails ruby


【解决方案1】:

首先,您使用 HTTParty 发布正文值并使用以下方法获得响应:

post_body = [{ "name" => nameToPost,
                     "captchatext" => "",
                     "index" => "0" }]
headers = {}
result = HTTParty.post(urlToPostTo, { :body => post_body, :headers => headers })

接下来,您可以使用 Nokogiri 解析 html 并以类似于 jquery 选择器的方式查找内容:

html_doc = Nokogiri::HTML(result.response.body)
tables = html_doc.css("td")
tables[2]
...

Nokogiri 指南:http://ruby.bastardsbook.com/chapters/html-parsing/

【讨论】:

  • 收到标头必须是哈希的错误,即使已修复,我仍然没有得到预期的响应
  • 对不起,应该是headers = {}
  • 当然 - 这就是我正在做的,但似乎我没有得到正确的响应,尽管它在 JS 中工作......奇怪。
  • 您可以传递一个额外的参数来帮助您调试请求。 HTTParty.post({ :body => post_body, :debug_output => $stdout}
  • 无法根据此输出真正判断出什么问题 - 似乎它一定是服务器/响应问题,尽管没有弄清楚,但仍要标记为正确,因为这回答了原始问题
猜你喜欢
  • 2013-10-27
  • 2014-10-07
  • 1970-01-01
  • 2012-01-21
  • 1970-01-01
  • 1970-01-01
  • 2019-10-20
  • 1970-01-01
  • 2016-08-25
相关资源
最近更新 更多