gpt4 book ai didi

c# - 在 C# 中使用 WebClient 有没有办法在重定向后获取站点的 URL?

转载 作者:IT王子 更新时间:2023-10-29 03:56:07 25 4
gpt4 key购买 nike

使用 WebClient 类我可以很容易地获得网站的标题:

WebClient x = new WebClient();    
string source = x.DownloadString(s);
string title = Regex.Match(source,
@"\<title\b[^>]*\>\s*(?<Title>[\s\S]*?)\</title\>",
RegexOptions.IgnoreCase).Groups["Title"].Value;

我想存储 URL 和页面标题。但是,当点击以下链接时:

http://tinyurl.com/dbysxp

我显然想要获得重定向到的 Url。

问题

有没有办法使用 WebClient 类来做到这一点?

如何使用 HttpResponseHttpRequest 来实现?

最佳答案

如果我理解这个问题,这比人们说的要容易得多 - 如果您想让 WebClient 完成请求的所有细节(包括重定向),然后获取实际末尾的响应 URI,您可以像这样子类化 WebClient:

class MyWebClient : WebClient
{
Uri _responseUri;

public Uri ResponseUri
{
get { return _responseUri; }
}

protected override WebResponse GetWebResponse(WebRequest request)
{
WebResponse response = base.GetWebResponse(request);
_responseUri = response.ResponseUri;
return response;
}
}

只需在任何可能使用 WebClient 的地方使用 MyWebClient。在您完成需要执行的任何 WebClient 调用之后,您就可以使用 ResponseUri 来获取实际的重定向 URI。 如果您使用的是异步内容,则还需要为 GetWebResponse(WebRequest request, IAsyncResult result) 添加类似的覆盖。

关于c# - 在 C# 中使用 WebClient 有没有办法在重定向后获取站点的 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/690587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com