微信授权 Https

今天做微信授权,正常使用的代码拿过来后,一直报错 The remote certificate is invalid according to the validation procedure.

HttpWebRequest 的Get请求获取access_token时,报错,一直访问不了,然后在网上看到https://www.cnblogs.com/itjeff/p/5794673.html 的文章,才得以解决。

发生这个问题可能与计算机的根证书过期有关系,打开网页时一直提示。

把Get请求修改为以下:

       ///   
       /// 创建POST方式的HTTP请求  
       ///   
       /// 请求的URL  
       /// 随同请求POST的参数名称及参数值字典  
       /// 请求的超时时间  
       /// 请求的客户端浏览器信息,可以为空  
       /// 发送HTTP请求时所用的编码  
       /// 随同HTTP请求发送的Cookie信息,如果不需要身份验证可以为空  
       ///   
       public static HttpWebResponse CreatePostHttpResponse(string url,IDictionary parameters,int? timeout, string userAgent,Encoding requestEncoding,CookieCollection cookies)  
       {  
           if (string.IsNullOrEmpty(url))  
           {  
               throw new ArgumentNullException("url");  
           }  
           if(requestEncoding==null)  
           {  
               throw new ArgumentNullException("requestEncoding");  
           }  
           HttpWebRequest request=null;  
           //如果是发送HTTPS请求  
           if(url.StartsWith("https",StringComparison.OrdinalIgnoreCase))  
           {  
               ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);  
               request = WebRequest.Create(url) as HttpWebRequest;  
               request.ProtocolVersion=HttpVersion.Version10;  
           }  
           else 
           {  
               request = WebRequest.Create(url) as HttpWebRequest;  
           }  
           request.Method = "POST";  
           request.ContentType = "application/x-www-form-urlencoded";  
             
           if (!string.IsNullOrEmpty(userAgent))  
           {  
               request.UserAgent = userAgent;  
           }  
           else 
           {  
               request.UserAgent = DefaultUserAgent;  
           }  

           if (timeout.HasValue)  
           {  
               request.Timeout = timeout.Value;  
           }  
           if (cookies != null)  
           {  
               request.CookieContainer = new CookieContainer();  
               request.CookieContainer.Add(cookies);  
           }  
           //如果需要POST数据  
           if(!(parameters==null||parameters.Count==0))  
           {  
               StringBuilder buffer = new StringBuilder();  
               int i = 0;  
               foreach (string key in parameters.Keys)  
               {  
                   if (i > 0)  
                   {  
                       buffer.AppendFormat("&{0}={1}", key, parameters[key]);  
                   }  
                   else 
                   {  
                       buffer.AppendFormat("{0}={1}", key, parameters[key]);  
                   }  
                   i++;  
               }  
               byte[] data = requestEncoding.GetBytes(buffer.ToString());  
               using (Stream stream = request.GetRequestStream())  
               {  
                   stream.Write(data, 0, data.Length);  
               }  
           }  
           return request.GetResponse() as HttpWebResponse;  
       }  

       private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)  
       {  
           return true; //总是接受  
       }  

 

你可能感兴趣的:(VS)