记录一下,那些年踩过的坑!
//第一种
//处理HttpWebRequest访问https有安全证书的问题( 请求被中止: 未能创建 SSL/TLS 安全通道。)
ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, sslPolicyErrors) => true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
System.Net.ServicePointManager.Expect100Continue = false;
//var accessToken = new OAuthTokenCredential(config).GetAccessToken();
var url="";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json";
//request.Headers.Add("Authorization", accessToken);
//将有效负载附加到验证请求
var streamOut = new StreamWriter(request.GetRequestStream(), Encoding.ASCII);
streamOut.Write(dataStr);
streamOut.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream);
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
JObject obj = JObject.Parse(retString);
var VerificationStatus = obj["verification_status"].ToString();
//第二种
var url ="";
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var verificationRequest = (HttpWebRequest)WebRequest.Create(url);
//设置验证请求的值
verificationRequest.Method = "POST";
verificationRequest.ContentType = "application/x-www-form-urlencoded";
var param = page.Request.BinaryRead(ipnRequest.ContentLength);
var strRequest = Encoding.ASCII.GetString(param);
//将cmd = _notify-validate添加到有效负载
strRequest = "cmd=_notify-validate&" + strRequest;
verificationRequest.ContentLength = strRequest.Length;
//将有效负载附加到验证请求
var streamOut = new StreamWriter(verificationRequest.GetRequestStream(), Encoding.ASCII);
streamOut.Write(strRequest);
streamOut.Close();
//将请求发送到第三方并获得响应
var streamIn = new StreamReader(verificationRequest.GetResponse().GetResponseStream());
verificationResponse = streamIn.ReadToEnd();
streamIn.Close();
/// <summary>
/// HttpPost请求
/// </summary>
/// <param name="uri"></param>
/// <param name="data"></param>
/// <returns></returns>
public static string HttpPost(string uri, object data)
{
var dataStr = SerializationHelper.JsonSerialize(data);
HttpWebRequest request = HttpWebRequest.Create(uri) as HttpWebRequest;
request.Method = "POST";
request.ContentType = "application/json";
Stream reqStream;
byte[] postData = Encoding.UTF8.GetBytes(dataStr);
reqStream = request.GetRequestStream();
reqStream.Write(postData, 0, postData.Length);
var response = (HttpWebResponse)request.GetResponse();
StringBuilder respBody = new StringBuilder();
byte[] buffer = new byte[8192];
Stream stream;
stream = response.GetResponseStream();
int count = 0;
do
{
count = stream.Read(buffer, 0, buffer.Length);
if (count != 0)
respBody.Append(Encoding.UTF8.GetString(buffer, 0, count));
}
while (count > 0);
string responseText = respBody.ToString();
return responseText;
}