2013-11-15 32 views
0

我有一個通過以太網連接並通過網絡瀏覽器接口接收設置的設備。
當用戶點擊「更新設置」按鈕調用它具有格式在Ruby中發送URL請求

{{IP}}/cgi-bin/webinterfaceSharedMemoryClient.cgi?key=value&key=value&key=value 

其中{{IP}}是所述裝置的所述一組IP的URL。

有沒有人有一個想法,我可以發送這個使用Ruby,而不使用網絡瀏覽器?

+0

根據不同的方法使用,無論是POST或GET,您可以使用許多不同的庫或寶石:OpenURI是最簡單的,諸如此類了HTTPClient或路沿石很好功能的,但多一點複雜的,到Net :: HTTP,它非常強大,但很快就會變得複雜。 OpenURI不支持POST,但其餘的都支持。 –

回答

2

最簡單的:

require 'open-uri' 
url = "IP/cgi-bin/webinterfaceSharedMemoryClient.cgi?key=value&key=value&key=value" 
response = open(url) { |io| io.read } 

有了更多的控制,使用Net::HTTP

+0

只需使用'open(url).read' –

1

有一個名爲淨紅寶石庫,應該做你想做的。最簡單的用法是這樣的:

require 'net/http' 

uri = URI('http://#.#.#.#/cgi-bin/webinterfaceSharedMemoryClient.cgi?key=value&key=value&key=value') 
Net::HTTP.get(uri) # => results 

這基本上是從Ruby的2.0文檔在這裏:http://ruby-doc.org/stdlib-2.0.0/libdoc/net/http/rdoc/Net/HTTP.html

1

另一種選擇是mechanize寶石。這裏有一個例子:

require 'mechanize' 

agent = Mechanize.new 
page = agent.get "http://www.example.org/" 
page.link_with(:text => 'More information...').click 
+0

「錯誤的標題行格式」 上述每一個似乎都在圍繞某種方式工作,雖然它會出現我缺少的東西。謝謝 – Maximillion