Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何以编程方式在C#中找到真正的URL而不是转发链接?_C#_Url - Fatal编程技术网

如何以编程方式在C#中找到真正的URL而不是转发链接?

如何以编程方式在C#中找到真正的URL而不是转发链接?,c#,url,C#,Url,问这个问题的另一种方式是:如何以编程方式将TinyURL链接扩展到其真实位置 我想做的是找到一种以编程方式获取链接的方法: http://www.baidu.com/link?url=mW91GJqjJ4zBBpC8yDF8xDhiqDSn1JZjFWsHhEoSNd85PkV8Xil7qccoOX3rynaE (百度搜索杰西卡·阿尔巴的第一个链接)并返回实际链接: http://baike.baidu.com/view/270790.htm 这只是一个例子。我想做的不是针对Jessica,

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

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

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”