【问题标题】:Using Ruby, what is the most efficient way to get the content type of a given URL?使用 Ruby,获取给定 URL 的内容类型的最有效方法是什么?
【发布时间】:2011-09-18 01:08:41
【问题描述】:

使用 Ruby 获取给定 URL 的内容类型的最有效方法是什么?

【问题讨论】:

    标签: ruby content-type


    【解决方案1】:

    如果我想要简单的代码,我会这样做:

    require 'open-uri'
    str = open('http://example.com')
    str.content_type #=> "text/html"
    

    最大的优势是它遵循重定向。

    如果您要检查一堆 URL,您可能需要在找到所需内容后调用句柄上的 close

    【讨论】:

    • 酷,不知道open-uri :) 结果找到了这篇博文。很方便:juretta.com/log/2006/08/13/ruby_net_http_and_open-uri
    • Open-URI 是一个很棒的小工具,当您想要透明地处理 URL 时,无论它们是“file:”、“ftp:”还是“http:”。它也处理超时和重定向,所以它对我做的大多数事情都有好处,除非我需要对连接进行细粒度控制,然后我要么使用 Net::HTTP,要么使用 Typhoeus 或 Curb 之类的东西或其中之一宝石。
    • 要跟踪重定向,您可能需要使用github.com/jaimeiniesta/open_uri_redirections
    • 这为我节省了很多时间来处理端口 80 被拒绝的连接。谢谢!
    • 缺点是您必须将整个目标下载为临时文件才能获取其类型。 ://
    【解决方案2】:

    看看Net::HTTP 库。

    require 'net/http'
    
    response = nil
    uri, path = 'google.com', '/'
    Net::HTTP.start(uri, 80) { |http| response = http.head(path) }
    p response['content-type']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      • 2012-07-30
      • 1970-01-01
      • 2011-08-13
      • 1970-01-01
      • 1970-01-01
      • 2015-06-26
      相关资源
      最近更新 更多