VB.NET WebRequest Http und Https?
-
lese inhalt einer internetseite meines webservers:
oRequest = WebRequest.Create(sBuf) oRequest.Method = "GET" oResponse = oRequest.GetResponse() oStream = New StreamReader(oResponse.GetResponseStream())
das ganze funktioniert auch wunderbar mit (HTTP)!!
Wenn ich nun die gleiche Webseite auf HTTPS protiere, kann ich die
Seite im Browser öffnen (etwas langsamer), aber ich kann sie mit meinem Programm nicht mehr öffen! Absturz in der dritten Zeile sieh Code oben!
-
Um SSL (Secure Sockets Layer) zur Verschlüsselung der Verbindung zu verwenden, muss die EnableSsl-Eigenschaft auf true gesetzt werden, bevor GetResponse aufgerufen wird.
oRequest.EnableSsl = True oResponse = oRequest.GetResponse()
-
danke schonmal, aber diese Eigenschaft "EnableSsl" gibts nich... ich verwende VB.net nich NICHT C#
-
Schau mal hier: http://msdn2.microsoft.com/de-de/library/ds8bxk2a(VS.80).aspx
-
Absturz in der dritten Zeile sieh Code oben!
Also wenn das Programm direkt abkackt ohne eine Exception zu werfen, würde ich mal bei Microsoft anfragen, denn soetwas sollte eigentlich nicht passieren.
Ich habe zwar keine Ahnung, aber was zwei Minuten googlen so ergeben haben zeigt mir, das man wohl System.Net.ServicePointManager.CertificatePolicy auf irgend eine eigene Policy setzen muss oder so.
Und Codebeispiele finden sich auch.
.Net 1.1:
using System.Net; using System.Security.Cryptography.X509Certificates; // ... private void MethodToAccessSSL() { // ... ServicePointManager.CertificatePolicy = new AcceptAllCertificatePolicy(); // ... WebRequest myRequest = WebRequest.Create(url); ... } internal class AcceptAllCertificatePolicy : ICertificatePolicy { public AcceptAllCertificatePolicy() { } public bool CheckValidationResult(ServicePoint sPoint, X509Certificate cert, WebRequest wRequest,int certProb) { return true; } }
.Net 2.0
using System.Net; using System.Security.Cryptography.X509Certificates; using System.Net.Security; private void MethodToAccessSSL() { // ... ServicePointManager.ServerCertificateValidationCal lback = new RemoteCertificateValidationCallback(ValidateServer Certificate); // ... WebRequest myRequest = WebRequest.Create(url); ... } // The following method is invoked by the RemoteCertificateValidationDelegate. public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { if (sslPolicyErrors == SslPolicyErrors.None) return true; Console.WriteLine("Certificate error: {0}", sslPolicyErrors); // Do not allow this client to communicate with unauthenticated servers. return false; }
-
Hmm.. dann müsste ich wohl nichts am code ändern müssen... und es müsste klappen! Könnte es daran liegen das ich noch das 1.1 Framework benutze?
-
habe VB.net Studio 2005 mit 2. framework installiert.. das geht das auch nicht
Fehler: Die zugrunde liegende Verbindung wurde geschlossen: Für den geschützen SSL bereich.. etc.......
wenn ich die seite im Browser öffnen will, kommt eine User/Pws einfabemaske, welche ich aber nur mit "Eingabe" bestätigen msus und ich komm auf die seite.. muss wohl doch so eine policy dings da einbauen