发布到其他网站的表单并获得 Rails 的回复

Posting to other website's form and getting response with Rails

我正在尝试向该网站 (http://www.degraeve.com/translator.php) 发送一些参数并获取对我的 rails 应用程序的响应。我想从名称为 'd' 的单选按钮中选择 select 'binary' 并在名称为 'w' 的文本字段中仅放置 'a' 进行翻译。 我在我的控制器上使用这个动作:

class RoomsController < ApplicationController
  require "uri"
  require "net/http"
  require 'json'


  def test    

    uri = URI.parse("http://www.degraeve.com/translator.php")
    header = {'Content-Type': 'text/json'}
    params = { d: 'binary', w: 'a' }

    # Create the HTTP objects
    http = Net::HTTP.new(uri.host, uri.port)
    request = Net::HTTP::Post.new(uri.request_uri, header)
    request.body = params.to_json

    # Send the request
    response = http.request(request)
    render json: response.body
  end
end

有什么问题吗?它只是在提交表单之前呈现 http://www.degraeve.com/translator.php 的正文,但我想在提交后获取正文。

当您查看按下 "Translate!" 按钮后发生的情况时,您可能会注意到没有通过 POST 提交的表单。相反,发送 GET 请求并返回 HTML 文件 - 请在浏览器的网络检查器中自行查看。

因此,您可以使用准备好的 URL 发送一个简单的 GET 请求,就像这样(注意 dw 查询参数):

uri = URI.parse("http://www.degraeve.com/cgi-bin/babel.cgi?d=binary&url=http%3A%2F%2Fwww.multivax.com%2Flast_question.html&w=a")
response = Net::HTTP.get_print(uri)

然后相应地解析响应。