6

提出这个问题的另一种方法是:如何以编程方式将 TinyURL 链接扩展至其真实位置?

我想做的是找到一种以编程方式获取链接的方法:

http://www.baidu.com/link?url=mW91GJqjJ4zBBpC8yDF8xDhiqDSn1JZjFWsHhEoSNd85PkV8Xil7qccoOX3rynaE

(使用 baidu.com 搜索 Jessica Alba 的第一个链接)并让它返回实际链接:

http://baike.baidu.com/view/270790.htm

这只是一个例子。我想做的不是特定于杰西卡,而是在我的元搜索引擎项目中使用百度网站作为我的搜索引擎组的一部分。

也许有一种使用WebBrowser该类的方法,但我没有看到该 URL 的成员。

也许有一种使用方式WebRequestWebResponse

4

3 回答 3

2

给你,这很好,很容易!

var WReq = WebRequest.Create("http://www.baidu.com/link?url=mW91GJqjJ4zBBpC8yDF8xDhiqDSn1JZjFWsHhEoSNd85PkV8Xil7qccoOX3rynaE");
WReq.Method = "HEAD";   // Only download the headers, not the page content
var ActualURL = WReq.GetResponse().ResponseUri.ToString();
MessageBox.Show(ActualURL);

于 2012-11-28T08:05:59.677 回答
2

向 tinied URL 发出请求,并解析出 HTTP 响应Location标头。

于 2012-11-28T07:51:55.163 回答
1
string url = "http://www.baidu.com/link?url=mW91GJqjJ4zBBpC8yDF8xDhiqDSn1JZjFWsHhEoSNd85PkV8Xil7qccoOX3rynaE";
var req = (HttpWebRequest)HttpWebRequest.Create(url);
req.AllowAutoRedirect = false; //<--!!!!
var resp = req.GetResponse();
var realUrl = resp.Headers["Location"]; //http://baike.baidu.com/view/270790.htm

PS:这里的重点是req.AllowAutoRedirect = false

于 2012-11-28T07:54:29.900 回答