我有一個通過以太網連接並通過網絡瀏覽器接口接收設置的設備。
當用戶點擊「更新設置」按鈕調用它具有格式在Ruby中發送URL請求
{{IP}}/cgi-bin/webinterfaceSharedMemoryClient.cgi?key=value&key=value&key=value
其中{{IP}}
是所述裝置的所述一組IP的URL。
有沒有人有一個想法,我可以發送這個使用Ruby,而不使用網絡瀏覽器?
我有一個通過以太網連接並通過網絡瀏覽器接口接收設置的設備。
當用戶點擊「更新設置」按鈕調用它具有格式在Ruby中發送URL請求
{{IP}}/cgi-bin/webinterfaceSharedMemoryClient.cgi?key=value&key=value&key=value
其中{{IP}}
是所述裝置的所述一組IP的URL。
有沒有人有一個想法,我可以發送這個使用Ruby,而不使用網絡瀏覽器?
最簡單的:
require 'open-uri'
url = "IP/cgi-bin/webinterfaceSharedMemoryClient.cgi?key=value&key=value&key=value"
response = open(url) { |io| io.read }
有了更多的控制,使用Net::HTTP
。
只需使用'open(url).read' –
有一個名爲淨紅寶石庫,應該做你想做的。最簡單的用法是這樣的:
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
另一種選擇是mechanize寶石。這裏有一個例子:
require 'mechanize'
agent = Mechanize.new
page = agent.get "http://www.example.org/"
page.link_with(:text => 'More information...').click
「錯誤的標題行格式」 上述每一個似乎都在圍繞某種方式工作,雖然它會出現我缺少的東西。謝謝 – Maximillion
根據不同的方法使用,無論是POST或GET,您可以使用許多不同的庫或寶石:OpenURI是最簡單的,諸如此類了HTTPClient或路沿石很好功能的,但多一點複雜的,到Net :: HTTP,它非常強大,但很快就會變得複雜。 OpenURI不支持POST,但其餘的都支持。 –