Holen Sie Webseite Inhalt der Seite und den HTTP-status-code in C#
In einer C# - Windows Forms-Anwendung, die ich bekommen kann den Inhalt einer Webseite mit:
string content = webClient.DownloadString(url);
Und ich kann die HTTP-header mit:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
string response = ((HttpWebResponse)request.GetResponse()).StatusCode.ToString();
Gibt es einen Weg, um sowohl den Inhalt und die HTTP-status-code (wenn es nicht) auf einer Reise an den server statt zweimal?
Dank.
request.GetResponse()
bekommen Sie beides. Du bist der eine, der nimmt nurStatusCode
aus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lesen Sie die Daten aus dem Stream innerhalb der
HttpWebResponse
Objekt:In dieser Weise haben Sie, die Codierung zu erkennen, die von hand oder mithilfe einer Bibliothek zur Erkennung der Kodierung. Lesen Sie die Kodierung als string von der
HttpWebResponse
- Objekt, wenn eine vorhanden ist, ist es im inneren desContentType
Eigenschaft. Wenn die Seite in Html ist, dann haben Sie zu analysieren, es für eine mögliche Kodierung ändern, in der oberen Rand des Dokuments oder im inneren des Kopfes.Lesen Umgang mit der Codierung von der ContentType-header
GetResponse and GetResponseStream
werfen kann Ausnahmenvar encoding = response.CharacterSet == "" ? Encoding.UTF8 : Encoding.GetEncoding(response.CharacterSet);
CharacterSet
Eigenschaft war es.WebClient
Ich nehme an, Sie verwenden
WebClient
weil seine leicht webrequest-zu-string-handling. LeiderWebClient
nicht aussetzen HTTP-Antwort-code. Sie können entweder davon ausgehen, die Antwort war positiv (2xx
), es sei denn, Sie bekommen eine Ausnahme und Lesen Sie es:Oder wenn Sie wirklich interessiert sind in der Erfolgs-code, den Sie verwenden können, Reflexion", wie erklärt hier.
HttpClient
Können Sie auch
HttpClient
wenn Sie auf .NET 4.5, was bedeutet aussetzen der Antwort-code, wie hier erklärt wird:HttpWebRequest
Alternativ können Sie verwenden Sie einfach
HttpWebRequest
um den status und die Antwort wie hier erklärt wird:GetResponse and GetResponseStream
werfen kann AusnahmenIch denke, Sie haben nicht realisiert, dass im zweiten Fall haben Sie Zugriff auf die Inhalte, als auch (obwohl es dauert ein wenig mehr Aufwand, um als string).
Blick auf die Microsoft-Dokumentation: http://msdn.microsoft.com/en-us/library/system.net.httpwebresponse.getresponsestream(v=vs. 110).aspx, die Ihnen zeigt, wie Sie ge-eine-Antwort-stream von der web-Antwort, und dann, wie man die string-Daten stream.
Methode BEKOMMEN gibt HEAD-und BODY-Abschnitte in der Antwort.
HTTP unterstützen auch eine Methode KOPF - die gibt HEAD-Bereich nur.
Können Sie bekommen KÖRPER von HttpWebResponse mit GetResponseStream-Methode.