Anfordern von html über https mit c# Webclient
Ich bin versucht verschiedene html-Ressourcen mit c# - WebClient-Klasse aus einer Seite, die ich keine Kontrolle habe.
Wenn ich versuche, Zugriff auf urls wie
"https://archive.org/details/OTRR_In_The_Name_Of_The_Law_Singles"
Bekomme ich die Fehlermeldung:
System.Net.WebException: Die Anfrage wurde abgebrochen: es Konnte keine sichere SSL/TLS-Kanal.
Habe ich Lösungen gefunden, empfehle ich den folgenden code verwenden, ignorieren Sie die Zertifikat-Anforderung und damit der webclient fungieren als browser, aber ich erhalten die gleiche Fehlermeldung
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(
delegate
{
return true;
});
using(WebClient webClient = new WebClient()) {
webClient.Headers["User-Agent"] = "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 (.NET CLR 3.5.30729)";
webClient.Headers["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
webClient.Headers["Accept-Language"] = "en-us,en;q=0.5";
webClient.Headers["Accept-Encoding"] = "gzip,deflate";
webClient.Headers["Accept-Charset"] = "ISO-8859-1,utf-8;q=0.7,*;q=0.7";
StreamReader sr = new StreamReader(webClient.OpenRead(inputString));
}
Bist du hinter einem proxy?
Ich wahrscheinlich bin, ich bin mit einem server gehostet. Was wäre eine Lösung gegeben, ich bin hinter einem proxy?
Kontaktierte meinen Freund, der Techniker meinen server und er teilte mir mit, ich bin nicht hinter einem proxy.
Ich wahrscheinlich bin, ich bin mit einem server gehostet. Was wäre eine Lösung gegeben, ich bin hinter einem proxy?
Kontaktierte meinen Freund, der Techniker meinen server und er teilte mir mit, ich bin nicht hinter einem proxy.
InformationsquelleAutor RRadix | 2013-11-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben, Lesen Sie dieses: http://support.microsoft.com/kb/915599
Dem server, auf den Sie zugreifen, nicht TLS-Unterstützung, so dass Sie brauchen, um zu zwingen es zu verwenden, SSL3.
Fügen Sie die folgende Zeile auf Ihren Anruf:
Hier ein voll funktionsfähiges Beispiel:
Es gibt 4 SecurityProtocolType Optionen: Ssl3, Tls, Tls11, Tls12. Ich hatte zu jeder versuchen, zu finden, dass Tls12 für mich gearbeitet.
InformationsquelleAutor David Martin
in .net Framework 4.0-add
Dieser arbeitete für mich als auch (
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
). Wahrscheinlich kommt es auf den server, so sollten Sie versuchen, alle Werte in der SecurityProtocolType enum-Typ docs.microsoft.com/en-us/dotnet/api/.... Aber auch eineServerCertificateValidationCallback
, die true zurückgibt, wie in den anderen Antworten.InformationsquelleAutor Sergey S
Fügen Sie einfach diese Zeile vor
var stream = webClient.OpenRead(address);
Sollte aufpassen, dass man die SSL - /TLS-Fehler
Vereinbart. Aber es hängt alles vom Kontext verwendet wird. Manchmal ist es egal, ob es gesichert ist oder nicht. Aber jeder Ihren eigenen, denke ich.
Ich folgte Ihren Rat und jemand heruntergeladen, mein Auto.
Haben Sie implementiert eine dashcam mit GPS-tracker in Ihrem Auto? Das war der ganze Punkt, den ich versuche zu machen. Wenn Sie nicht gesichert sind mit Certs, dann müssen Sie implementieren die Sicherheit auf eine andere Weise
InformationsquelleAutor Pierre