C # Wie kann ich prüfen, ob eine URL existiert / gültig ist?
Mache ich ein einfaches Programm in visual c# 2005, sucht ein stock-symbol auf der Yahoo! Finanzen, downloads die historischen Daten, und dann die Graphen der Preis-Geschichte für die angegebene ticker symbol.
Weiß ich die genaue URL, die ich erwerben muss, die Daten, und wenn der Benutzer Eingänge einer vorhandenen ticker-symbol (oder zumindest eine mit Daten von Yahoo! Finanzen) funktioniert es einwandfrei. Aber ich habe einen Laufzeitfehler, wenn der Benutzer macht einen ticker symbol, wie das Programm versucht, ziehen Sie Daten von einem nicht-existenten web-Seite.
Ich bin mit der WebClient-Klasse, und mit der DownloadString Funktion. Ich schaute durch all die anderen member-Funktionen der WebClient-Klasse, aber nicht alles sehen, die ich verwenden könnte, um zu testen eine URL.
Wie kann ich dies tun?
InformationsquelleAutor der Frage Daniel Waltrip | 2009-05-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dazu können Sie eine "KOPF" Antrag eher als einen "HOLEN"?
(edit) - lol! Sieht aus wie ich habe dies getan, bevor!; geändert wiki um Vorwürfe zu vermeiden, rep-Verankerung. Also zum testen eine URL ohne Kosten beim herunterladen der Inhalte:
Würden Sie
try
/catch
rund um dieDownloadString
zu überprüfen für Fehler; kein Fehler? Es besteht...Mit C# 2.0 (VS2005):
und
InformationsquelleAutor der Antwort
Hier ist eine andere Implementierung dieser Lösung:
Aus: http://www.dotnetthoughts.net/2009/10/14/how-to-check-remote-file-exists-using-c/
InformationsquelleAutor der Antwort BigJoe714
Diese Lösungen sind ziemlich gut, aber Sie vergessen, dass es auch andere status-codes als 200 OK. Dies ist eine Lösung, die ich verwendet habe, auf Produktions-Umgebungen für die status-überwachung und so.
Wenn es einen url-redirect oder einigen anderen Bedingungen, die auf der Ziel-Seite, die Rückkehr wird wahr, mit dieser Methode. Auch GetResponse() eine Ausnahme aus, und daher werden Sie nicht bekommen einen StatusCode. Sie müssen zum abfangen der Ausnahme und überprüfen Sie, ob ein ProtocolError.
Jede 400-oder 500-Statuscode den Wert false zurück. Alle anderen true zurück.
Dieser code wird leicht modifiziert, um Ihre Bedürfnisse für bestimmte status-codes.
InformationsquelleAutor der Antwort jsmith
Wenn ich verstehe deine Frage richtig, könnte man eine kleine Methode, wie diese zu geben Sie die Ergebnisse Ihrer URL testen:
Könnten Sie wickeln den obigen code in eine Methode und verwenden Sie es, um die Validierung. Ich hoffe, dies beantwortet die Frage, die Sie Fragen,.
InformationsquelleAutor der Antwort Calendar Software
Versuchen, diese (Stellen Sie sicher, dass Sie System.Net):
Wenn die checkWebsite () - Funktion aufgerufen wird, wird versucht den source-code von
der URL an Sie übergeben. Es wird der source-code, gibt es true zurück. Wenn nicht,
es gibt Sie false zurück.
Code Beispiel:
InformationsquelleAutor der Antwort user6909992
Hier ist eine weitere option
InformationsquelleAutor der Antwort Zain Ali
Diese Lösung scheint einfach zu Folgen:
InformationsquelleAutor der Antwort abobjects.com
Web-Server antwortet mit einer HTTP-status-code zeigt das Ergebnis der Anfrage, z.B. 200 (manchmal 202) bedeutet Erfolg, 404 - nicht gefunden usw (siehe hier). Vorausgesetzt, die server-Adresse " - Teil der URL ist korrekt und Sie sind nicht immer ein socket-timeout ist die Ausnahme, die meisten wahrscheinlich sagen Sie den HTTP-status-code war anders als 200. Ich würde vorschlagen, die überprüfung der Klasse der exception und sehen, ob die Ausnahme trägt den HTTP-status-code.
IIRC - Der Ruf in Frage wirft eine WebException oder ein Nachkomme. Überprüfen Sie den Namen der Klasse zu sehen, welche ein und wickeln Sie den Aufruf in einen try-block zum abfangen der Bedingung.
InformationsquelleAutor der Antwort David Taylor
habe ich einen einfachen Weg, um festzustellen, ob eine url gültig ist.
InformationsquelleAutor der Antwort tsingroo
Anschluss an die Beispiele schon gegeben, ich würde sagen, es ist am besten Praxis, um auch wickeln Sie die Antwort in einer Anwendung wie dieser
InformationsquelleAutor der Antwort user3154431
Ich habe immer gefunden, Ausnahmen sind viel langsamer verarbeitet werden.
Vielleicht eine weniger intensive Weise würde yeild ein besseres, schnelleres Ergebnis?
Dann verwenden Sie einfach:
InformationsquelleAutor der Antwort Rusty Nail
InformationsquelleAutor der Antwort Praveen Dasare