Net::HTTP 使用方式
在 UbiSunrsie 裡面介紹過的小小 Script 裡面有用到,就直接用範例來解釋一下使用方式。
GET
POST
如果不喜歡這樣,還有其他作法
GET
require 'net/http'基本上,Start一個 Net::HTTP Connection HOST,然後使用 http.get來抓取你要的頁面,最後用 response.body 印出來即可。
Net::HTTP.version_1_2
Net::HTTP.start('www.google.com.tw', 80) {|http|
response = http.get('/index.html')
puts response.body
}
POST
require 'net/http'稍微複雜一點的作法,除了 http.get 變成 http.post 之外,後面的 variable = value 的形式是採用 application/x-www-form-urlencoded 的形式傳遞出去的,大家應該都很熟悉。
Net::HTTP.version_1_2
url ='example.com'
action = '/cgi-bin/query'
Net::HTTP.start( url , 80 ) {|http|
response = http.post( action , 'var1=value1&var2=value2' )
response.body.each do |line|
puts line
end
}
如果不喜歡這樣,還有其他作法
require 'net/http'好處是 value 傳遞是用 hash 方式來傳遞,比較 Ruby 化,壞處是比起 Net::HTTP.post_form ,我比較喜歡 http.post 這樣的形式。
require 'uri'
res = Net::HTTP.post_form(URI.parse('http://example.com'), {'var'=> 'value' , 'var2' => 'value2' })
res.body.each do |line|
puts line
end
end
2 則留言:
難得你會不堅持Ruby style:P
不過,用var=value的形式傳遞真的看得比較懂,也比較好寫:P
辛苦你了 :D
身體請多保重^^"
CFC --
剛好有這方面的問題想請教, 如果我在一個controller裡面想實作, 以post連到別的外部頁面並且附帶參數的方式, 請問要怎麼實作才好呢
張貼留言