ac-*_*lap 1 c# web-crawler http-redirect windows-phone-8
我有一个API ( https://www.readability.com/developers/api/parser#idm386426118064 ) 来提取网页的内容,但是在传递缩短的 url 或重定向到其他 url 时,它会出错。
我正在开发 Windows Phone 8.1 (xaml) 应用程序。有没有办法在c#或任何解决方法中获取目标网址?
您可以Location在HttpClient跟随它之前拦截标头值,如下所示:
using (var handler = new HttpClientHandler())
{
handler.AllowAutoRedirect = false;
using (var client = new HttpClient(handler))
{
var response = await client.GetAsync("shortUrl");
var longUrl = response.Headers.Location.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
此解决方案将始终是最有效的,因为它只发出一个请求。
但是,短网址可能会引用另一个短网址,从而导致此方法失败。
另一种解决方案是允许HttpClient跟随Location标头值并观察目的地:
using (var client = new HttpClient())
{
var response = client.GetAsync("shortUrl").Result;
var longUrl = response.RequestMessage.RequestUri;
}
Run Code Online (Sandbox Code Playgroud)
这种方法比第一种方法更简洁、更可靠。
缺点是此代码将发出两个请求而不是一个。