C# .net 利用HttpWebRequest进行get/post请求

记录一下,那些年踩过的坑!


//第一种
//处理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;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值