1. 程式人生 > >post請求https介面

post請求https介面

 private string HttpPostForm(string url, string postdata)
       {
           //類似瀏覽器確認證書合法方法的繫結
           ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidate;
           System.Net.WebRequest request = HttpWebRequest.Create(url);
           request.Method = "POST";
           request.Timeout = 20000;
           HttpWebResponse response = null;
           try
           {
               //post提交資料
               if (!string.IsNullOrEmpty(postdata))
               {
                   byte[] bytes = Encoding.UTF8.GetBytes(postdata);
                   request.ContentType = "application/x-www-form-urlencoded";
                   Stream sendStream = request.GetRequestStream();
                   sendStream.Write(bytes, 0, bytes.Length);  
               }
               response = (HttpWebResponse)request.GetResponse();
               Console.WriteLine(response.StatusDescription);
               Stream dataStream = response.GetResponseStream();
               StreamReader reader = new StreamReader(dataStream, Encoding.UTF8);
               string responseFromServer = reader.ReadToEnd();
               reader.Close();
               dataStream.Close();
               response.Close();
               return responseFromServer;
           }
           catch (Exception e)
           {
               return e.Message;
           }
       }


       //該方法用於驗證伺服器證書是否合法,當然可以直接返回true來表示驗證永遠通過。伺服器證書具體內容在引數certificate中。可根據個人需求驗證
       //該方法在request.GetResponse()時觸發
       private static bool RemoteCertificateValidate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error)
       {
           //為了通過證書驗證,總是返回true
           return true;

       }

 /// <summary>  
       /// 獲取時間戳  
       /// </summary>  
       /// <returns></returns>  
       private string GetTimeStamp()
       {
           TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
           return Convert.ToInt32(ts.TotalSeconds).ToString();
       }


       /// <summary>
       /// 生成隨機字串
       /// </summary>
       /// <param name="strPwChar">傳入生成的隨機字串可以使用哪些字元</param>
       /// <param name="intlen">傳入生成的隨機字串的長度</param>
       private static string MakePassword(string strPwChar, int intlen)
       {
           string strRe = "";
           int iRandNum;
           Random rnd = new Random();
           for (int i = 0; i < intlen; i++)
           {
               iRandNum = rnd.Next(strPwChar.Length);
               strRe += strPwChar[iRandNum];
           }
           return strRe;
       }


       /// <summary>
       /// 獲取隨機字串
       /// </summary>
       /// <returns></returns>
       private string GetNonce()
       {
           //設定字元範圍為:大小寫字母及數字的隨機字串.
           string strPwChar = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
           //擷取長度為20
           string strNewPW = MakePassword(strPwChar,20);


           return strNewPW;
       }