【C# 工具类】HttpUitls

最近用C#做完了一个项目,分享一个良心技术博客。

第一章:C#如何拿到从http上返回JSON数据?

第二章:C#如何解析JSON数据?(反序列化对象)

第三章:C#如何生成JSON字符串?(序列化对象)

第四章:C#如何生成JSON字符串提交给接口(服务器)

在这个可用的HttpUitls工具类的基础上,老陌补充了几行(authorization+验证证书),亲测可用。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Web;
using System.Windows.Forms;

namespace Test
{
    class HttpUitls
    {
        public static string Get(string Url)
        {
           // System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
            //System.GC.Collect();
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
            request.Proxy = null;
            request.KeepAlive = false;
            request.Method = "GET";
            request.ContentType = "application/json; charset=UTF-8";
            request.AutomaticDecompression = DecompressionMethods.GZip;

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream myResponseStream = response.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
            string retString = myStreamReader.ReadToEnd();

            myStreamReader.Close();
            myResponseStream.Close();

            if (response != null)
            {
                response.Close();
            }
            if (request != null)
            {
                request.Abort();
            }

            return retString;
        }

        public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)

        {

            if (sslPolicyErrors == SslPolicyErrors.None)

                return true;

            return false;

        }
        public static string Post(string Url, string Data, string Referer)
        {           
                //添加验证证书的回调方法
                ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
            request.Method = "POST";
            request.Referer = Referer;
            byte[] bytes = Encoding.UTF8.GetBytes(Data);
            request.ContentType = "application/json";                  
            // request.ContentType ="application/x-www-form-urlencoded";
            request.ContentLength = bytes.Length;           
            
                //Add authorization
                string username = "username";
                string password = "password";
                //注意这里的格式为 "username:password"
                string usernamePassword = username + ":" + password;
                CredentialCache mycache = new CredentialCache();
                mycache.Add(new Uri(Url), "Basic", new NetworkCredential(username, password));
                request.Credentials = mycache;
                request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(usernamePassword)));
            
                X509Certificate cerBook = new X509Certificate(Application.StartupPath+@"\mycert.pfx", "password"); //證書放在exe同一路徑
                request.ClientCertificates.Add(cerBook);

            Stream myResponseStream = request.GetRequestStream(); 
            myResponseStream.Write(bytes, 0, bytes.Length);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
            string retString = myStreamReader.ReadToEnd();

            myStreamReader.Close();
            myResponseStream.Close();

            if (response != null)
            {
                response.Close();
            }
            if (request != null)
            {
                request.Abort();
            }
            return retString;
        }

}
}

另,分享一个JSON转换C#实体类的工具:JSON转C#实体类-BeJSON.com

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值