发布到其他网站的表单并获得 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 请求,就像这样(注意 d
和 w
查询参数):
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)
然后相应地解析响应。
我正在尝试向该网站 (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 请求,就像这样(注意 d
和 w
查询参数):
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)
然后相应地解析响应。