6

この質問をする別の方法は次のとおりです。TinyURL リンクを実際の場所にプログラムで展開するにはどうすればよいですか?

私がやりたいことは、プログラムでリンクを取得する方法を見つけることです:

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

(baidu.com を使用して Jessica Alba を検索した場合の最初のリンク)、実際のリンクを返すようにします。

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

それはほんの一例です。私がやりたいことは、Jessica に固有のものではなく、私のメタ検索エンジン プロジェクトの検索エンジン グループの一部として Baidu.com を使用することです。

クラスを使用する方法があるかもしれWebBrowserませんが、URL であるメンバーが表示されませんでした。

WebRequestとの使い方もあるのかもしれませんWebResponse

4

3 に答える 3

2

小さな URL にリクエストを送信し、HTTP レスポンスLocationヘッダーを解析します。

于 2012-11-28T07:51:55.163 に答える
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 に答える
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 に答える