Ruby的’open-uri’和’Net:HTTP’gem有什么区别?

看起来这两个gem执行非常相似的任务。 任何人都可以举例说明一块gem比另一颗gem更有用吗? 我没有具体的代码,我更想知道每个gem的一般用例。 我知道这是一个简短的问题,我会根据要求填写空白。 谢谢。

他们看起来像执行类似任务的原因是OpenURI是Net :: HTTP,Net :: HTTPS和Net :: FTP的包装器。

通常,除非您觉得需要更低级别的界面,否则使用OpenURI会更好,因为您可以使用更少的代码。 使用OpenURI,您可以打开URL / URI并将其视为文件。

见: http : //www.ruby-doc.org/stdlib-1.9.3/libdoc/open-uri/rdoc/OpenURI.html和http://ruby-doc.org/stdlib-1.9.3//libdoc /net/http/rdoc/Net.html

我刚刚发现open确实遵循重定向,而Net::HTTP则没有,这是一个重要的区别。

例如, open('http://www.stackoverflow.com') { |content| puts content.read } open('http://www.stackoverflow.com') { |content| puts content.read }将在重定向后显示正确的HTML,而Net::HTTP.get(URI('http://www.stackoverflow.com'))将显示重定向消息和302状态代码。