【发布时间】:2010-10-28 11:33:07
【问题描述】:
使用 Ruby,我如何将短 URL(tinyURL、bitly 等)转换为相应的长 URL?
【问题讨论】:
使用 Ruby,我如何将短 URL(tinyURL、bitly 等)转换为相应的长 URL?
【问题讨论】:
我不使用 Ruby,但一般的想法是向服务器发送一个 HTTP HEAD 请求,然后服务器将返回一个 301 响应(永久移动),其中包含 URI 的 Location 标头。
HEAD /5b2su2 HTTP/1.1
Host: tinyurl.com
Accept: */*
回应:
HTTP/1.1 301 Moved Permanently
Location: http://stackoverflow.com
Content-type: text/html
Date: Sat, 23 May 2009 18:58:24 GMT
Server: TinyURL/1.6
这比打开实际 URL 快得多,而且您并不想获取重定向的 URL。它还与 tinyurl 服务配合得很好。
查看 ruby 中的任何 HTTP 或 curl API。这应该很容易。
【讨论】:
您可以使用 httpclient rubygem 获取标头
#!/usr/bin/env ruby
require 'rubygems'
require 'httpclient'
client = HTTPClient.new
result = client.head(ARGV[0])
puts result.header['Location']
【讨论】:
longUrl = HTTPClient.new.head("http://bit.ly/GFscreener12").header['Location'][0]
这里有一个很好的 Python 中 bitly API 的包装器: http://code.google.com/p/python-bitly/
所以 Ruby 一定有类似的东西。
【讨论】: