PayPal API,HttpWebRequest抛出SSL WebException

我正在尝试获取PayPal访问令牌,如下所示: https : //developer.paypal.com/docs/integration/direct/make-your-first-call/#get-an-access-token

我的C#代码如下所示:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://api.sandbox.paypal.com/v1/oauth2/token"); request.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(clientId + ":" + clientSecret)); request.Accept = "application/json"; request.Headers.Add("Accept-Language", "en_US"); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.Timeout = 10000; byte[] postBytes = Encoding.ASCII.GetBytes("grant_type=client_credentials"); request.ContentLength = postBytes.Length; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; Stream postStream = request.GetRequestStream(); // ###### Here I get the Exception! ###### postStream.Write(postBytes, 0, postBytes.Length); postStream.Flush(); postStream.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

当调用request.GetRequestStream()时,我得到一个带有德语文本的WebException“Die Anfrage wurde abgebrochen:Es konntekeingeschützterSSL/ TLS-Kanal erstellt werden。” 这意味着它无法创建安全的SSL / TLS通道。

我做错了什么? 有谁能够帮我?

谢谢,Volker

我找到了解决方案:

 ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; //SecurityProtocolType.Tls12; 

也许它也有助于其他人……

正确他们不再使用SSL 3,这是错误的来源。

您可以使用TLS 1.1和1.2

 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;