如何以编程方式在C#中找到真正的URL而不是转发链接?
问这个问题的另一种方式是:如何以编程方式将TinyURL链接扩展到其真实位置 我想做的是找到一种以编程方式获取链接的方法:如何以编程方式在C#中找到真正的URL而不是转发链接?,c#,url,C#,Url,问这个问题的另一种方式是:如何以编程方式将TinyURL链接扩展到其真实位置 我想做的是找到一种以编程方式获取链接的方法: http://www.baidu.com/link?url=mW91GJqjJ4zBBpC8yDF8xDhiqDSn1JZjFWsHhEoSNd85PkV8Xil7qccoOX3rynaE (百度搜索杰西卡·阿尔巴的第一个链接)并返回实际链接: http://baike.baidu.com/view/270790.htm 这只是一个例子。我想做的不是针对Jessica,
http://www.baidu.com/link?url=mW91GJqjJ4zBBpC8yDF8xDhiqDSn1JZjFWsHhEoSNd85PkV8Xil7qccoOX3rynaE
(百度搜索杰西卡·阿尔巴的第一个链接)并返回实际链接:
http://baike.baidu.com/view/270790.htm
这只是一个例子。我想做的不是针对Jessica,而是在我的元搜索引擎项目中将百度作为搜索引擎组的一部分
也许有一种方法可以使用WebBrowser
类,但我没有看到一个成员是URL
也许有一种方法可以使用
WebRequest
和WebResponse
向指定的URL发出请求,并解析出HTTP响应位置
标题。字符串URL=”http://www.baidu.com/link?url=mW91GJqjJ4zBBpC8yDF8xDhiqDSn1JZjFWsHhEoSNd85PkV8Xil7qccoOX3rynaE";
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
var req=(HttpWebRequest)HttpWebRequest.Create(url);
req.AllowAutoRedirect=false// 给你,很好,很简单
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);
但此解决方案同时读取实际页面http://baike.baidu.com/view/270790.htm
不必要。因此请取出消息框
。。。它只是为了简单地证明它是有效的。它与MessageBox
无关。使用Fiddler查看结果。@L.B啊,你的意思是它检索页面内容?您自己的答案与对GetResponse()
的调用完全相同。需要第二个请求。如果URL2重定向到另一个URL怎么办?即URL1>URL2>URL3。如果存在多个重定向,则此操作不起作用。它将转到URL1->尝试重定向到URL2->退出,返回URL2。如果URL2重定向到URL3怎么办?根据我的回答,正确的解决方案是req.Method=“HEAD”
。