2013-07-03 5 views
0

Ruby on rails.에 대한 새로운 소식입니다. HTTP GET 및 HTTP POST 요청을 수행하려고합니다. HTTP GET의 경우 코딩을했는데 정상적으로 작동하고 있습니다 ().하지만 HTTP POST의 경우이를 이해할 수 없습니다.. 난 당신이 모두 얻을 후 사용할 수있는 다음 하나를 사용할 수 있습니다Ruby에서 HTTP GET 및 POST 요청 수행

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 : 어떤 의사를 추천하는지 알고 싶습니까? POST 작업을 위해 –

+0

내 코드는 2 개의 입력 즉, target url 및 xml request body를 취해야합니다. –

답변

0

:

다음은 HTTP GET에 대한 코드입니다.

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