Get URL mit HttpClient C# .NET
Ich versuche, die URL einer Seite mit HttpClient. Ich hab bisher nur verwendet HttpWebRequest, aber ich brauche, um diese eine asynchrone Methode.
In dem code unten, myUri immer null zurück, die Ergebnisse werfen eine Ausnahme, wenn ich versuche, Griff Sie später auf.
Ist der location-header die falsche Sache zu verwenden?
string myUrl = "http://www.example.com/";
Uri myUri= new Uri(myUrl);
using (HttpClient client = new HttpClient())
using (HttpResponseMessage response = await client.GetAsync(myUri))
{
if (response.IsSuccessStatusCode)
{
myUri= response.Headers.Location;
Debug.WriteLine("True "+ myUri);
}
else {
Debug.WriteLine("False " + myUri);
}
}
response.Headers.Location
bezieht sich auf eine Umleitung. Es wird nicht immer gesetzt werden- OK danke ich versuche umgeleitete URLs sowieso, aber es scheint immer null zurück.
- Sind Sie versuchen, die endgültige URL, auf die die Seite umgeleitet wird?
- ja
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weil
HttpClient
wird, folgt automatisch umleitet. Wenn Sie die URL einer Seite umgeleitet wird, müssen Sie verhindern, dass es automatisch nach:Ändern Sie Ihren code wie folgt:
Hier ist eine asynchrone Art und Weise zu lösen die Finale URL weiterleiten:
Siehe @Rob ' s Antwort über AllowAutoRedirect.
Sobald Sie dies tun, beachten Sie
Die Linie
zu false ausgewertet, wenn Sie erhalten eine HTTP-301-redirect (alles was außerhalb des 200-299 (Nahkampf)
(Quelle)
Wenn Sie verhindern, dass automatisch nach umleitet, erhalten Sie eine HTTP-Antwort in der 3xx-Reihe für die Weiterleitung. Ihre Prüfung auf gültige codes müssen entsprechend geändert werden.