2017-05-06 105 views
0

我想发送一些参数到这个网站(http://www.degraeve.com/translator.php)并获得响应我的rails应用程序。我想从名称为'd'的单选按钮中选择'binary',并在要翻译的名称为'w'的文本字段上放上'a'。 我在我的控制器上使用此操作:发布到其他网站的表单并获得响应与Rails

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的主体,但我希望在提交表单后获取主体。

回答

1

当您看到按下“翻译”后会发生什么?按钮,您可能会注意到没有通过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) 

,然后相应地解析响应。

+0

感谢您的回答! –

相关问题