2013-07-03 55 views
0

我是rails上的新手Ruby。我想执行HTTP GET和HTTP POST请求。对于HTTP GET,我已经编码,它工作正常,但对于HTTP POST,我无法弄清楚在Ruby中执行http GET和POST请求

以下为HTTP GET的代码片段:

require "net/http" 
require "uri" 

uri = URI.parse("http://www.adobe.com") 

http = Net::HTTP.new(uri.host, uri.port) 
request = Net::HTTP::Get.new(uri.request_uri) 
response = http.request(request) 
puts response.body 
+0

这个文档不够清楚吗? –

+0

@Sergio:我可以知道你指的是哪个文件吗? –

+0

POST操作我的代码应该采取2个输入,即目标网址和XML请求主体。 –

回答

0

我使用下面的一个,你可以使用GET和POST。

def invoke_webservice url 
query_string = url[:query_string].blank? ? "" : url[:query_string].map{ |key, value| 
       "#{key}=#{CGI.escape(value)}" }.join("&").insert(0, "?") 
url[:class] = url[:class].blank? ? "" : url[:class] 
webservice_uri = URI.join(APP_CONFIG['webservice_uri_format'], '/application/', 
        url[:class], url[:action], query_string) 
uri = URI.parse(webservice_uri.to_s) 
http = Net::HTTP.new(uri.host, uri.port) 
#http.use_ssl = true 
#http.verify_mode = OpenSSL::SSL::VERIFY_NONE 
http.open_timeout = 25 
http.read_timeout = 500 
http.start do |http| 
    if url[:method] == 'get' 
    request = Net::HTTP::Get.new(uri.request_uri) 
    else 
    request = Net::HTTP::Post.new uri.path, initheader = { 'Content-Type' => 'application/json' } 
    request.body = url[:data].to_json 
    end 
    request.basic_auth APP_CONFIG['username'], APP_CONFIG['password'] 
    response = http.request request 
    JSON.parse(response.body) if response.code =~ /^2\d\d$/ 
end 
    rescue => e 
puts "Error Message is #{e.inspect} #{e.backtrace}" 
    end 
end