post請求https介面
{
//類似瀏覽器確認證書合法方法的繫結
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;
}