كيف يمكنني استخدام WebRequest للوصول إلى موقع مشفرة SSL باستخدام HTTPS؟

StackOverflow https://stackoverflow.com/questions/560804

  •  05-09-2019
  •  | 
  •  

سؤال

أنا أكتب برنامجا يقرأ المحتوى من مستخدم URL. مشكلتي في الرمز الذي يحدث شيء مثل هذا:

Uri uri = new Uri(url);
WebRequest webRequest = WebRequest.Create(uri);
WebResponse webResponse = webRequest.GetResponse();
ReadFrom(webResponse.GetResponseStream());

وهذا هو كسر إذا المقدمة عنوان URL هو عنوان URL "HTTPS: //". هل يمكن لأي شخص أن يساعدني في تغيير هذا الرمز بحيث سيعمل مع محتوى SSL المشفرة. شكرا.

هل كانت مفيدة؟

المحلول

أنت تقوم بذلك بالطريقة الصحيحة ولكن يمكن للمستخدمين تقديم عناوين URL إلى المواقع التي تحتوي على تثبيت SSL غير صالح. يمكنك تجاهل مشاكل Cert إذا وضعت هذا الخط قبل إجراء طلب الويب الفعلي:

ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);

أين AcceptAllCertifications يعرف ب

public bool AcceptAllCertifications(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certification, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
    return true;
}

نصائح أخرى

سيكون هذا الرابط ذا أهمية لك: http://msdn.microsoft.com/en-us/library/ds8bxk2a.aspx.

للحصول على اتصالات HTTP، تستخدم فئات WebRequest و Webresponse SSL للتواصل مع مضيفات الويب التي تدعم SSL. يتم اتخاذ قرار استخدام SSL من خلال فئة WebRequest، بناء على URI، يتم تقديمها. إذا بدأ URI ب "HTTPS:"، فسيتم استخدام SSL؛ إذا بدأ URI ب "http:"، فسيتم استخدام اتصال غير مشفر.

هذا واحد يعمل بالنسبة لي:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top