HTTP 请求帮助类和日志帮助类

也希望各位大神可以指点我一下:

由于最近一直再用HTTP请求URL所以 我自己写了一个简单的HTTP帮助类 不喜勿喷 哈哈

 啥也不说直接上代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;


namespace TaketheNos
{
   public class HttpHelper
    {
        public static string CallRemote(string url, Dictionary<string, string> paramsList, HttpMethod method)
        {
            MyWebClient wc = new MyWebClient();
            if (url.StartsWith("https"))   //判断请求是否是https
            {
                ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertificate;
            }


            if (method == HttpMethod.Get)     //如果请求方式是GET
            {
                foreach (var pa in paramsList)
                {
                    wc.QueryString.Add(pa.Key, pa.Value);
                }
                var byRemoteInfo =wc.DownloadData(url);
                
                    string sRemoteInfo = System.Text.Encoding.UTF8.GetString(byRemoteInfo);
                    return sRemoteInfo;
            }
            else
            {
                System.Collections.Specialized.NameValueCollection par = new System.Collections.Specialized.NameValueCollection();
                foreach (var pa in paramsList)
                {
                    par.Add(pa.Key, pa.Value);
                }
                    var byRemoteInfo = wc.UploadValues(url, "post", par);
                    string sRemoteInfo = System.Text.Encoding.UTF8.GetString(byRemoteInfo);
                    return sRemoteInfo;
              
               
            }

        }



        private static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
        {
            return true;
        }
    }


   public class MyWebClient : WebClient
   {
       protected  override WebRequest GetWebRequest(Uri uri)
       {
           WebRequest w = base.GetWebRequest(uri);
           w.Timeout = 30 * 1000;
           return w;
       }


    } 
}

可以看到 我是用URL 加上集合 加上请求方式的一个小的HTTP请求帮助类 然后中间那个是证书这个不用我说大家应该比我了解的清楚,WebClient是从元数据可以直接拿来用的GetWebRequest是接收请求的URL。好了 关于我的HTTP请求的帮助类我就说到这里,后面我给大家说一下调用和一个日志帮助类。

调用例子

  Dictionary<string, string> prament = new Dictionary<string, string>();
                prament.Add("name", "张三");
                prament.Add("age", "14");
                prament.Add("sex", "2");


                string Next = HttpHelper.CallRemote("http://192.168.0.1:222", prament, HttpMethod.Post);

先创建一个集合 然后把你要传的字段丢进去 就OK了。(注意我写的是string 类型的哟)



下面 我来说说日志帮助类:上代码(嘻嘻)

   #region 日志记录
        private static void LogPrint(string log)
        {
            try
            {
                string path = Environment.CurrentDirectory + @"\Logs";   ///这个会自动读取到你项目文件bug文件下面
                if (!Directory.Exists(path))
                    Directory.CreateDirectory(path);
                StreamWriter logSW = new StreamWriter(String.Format(@"{0}\Log_FenZhen{1:yyyyMMdd}.txt", path, DateTime.Now), true);
                logSW.WriteLine(String.Format("{0:yyyy-MM-dd HH:mm:ss}  {1}\n", DateTime.Now, log));


                logSW.Close();
                deleteFilesByTime(path);
            }
            catch
            {


            }
        }
        /// <summary>
        /// 删除30天后的日志
        /// </summary>
        /// <param name="path"></param>
        public static void deleteFilesByTime(string path)
        {
            Int64 time = 2592000000;//30天的毫秒数
            if (Directory.Exists(path))
            {
                //获取文件夹下所有的文件
                DirectoryInfo dyInfo = new DirectoryInfo(path);
                foreach (FileInfo feInfo in dyInfo.GetFiles())
                {
                    //判断文件日期是否小于定义的日期,是则删除
                    TimeSpan ts = DateTime.Now.Subtract(feInfo.CreationTime);
                    if (ts.TotalMilliseconds > time)
                    {
                        feInfo.Delete();
                    }
                }
            }
        }
        #endregion


这个日志帮助类会自动创建文件 所以不需要你手动去创建日志文件 然后会去判断要删除的文件。这个我也就不多解释了 你运行一下就知道了。
调用例子:
  LogPrint("获取显示数据 请求URL:" + JiuZheUrl + "?cardType=" + "" + "&cardNo=" + CareID );



最近又看到了一种写法,然后就附加上来
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;


namespace JiaoHao.Method
{
    class HttpClass
    {


        /// <summary>
        /// 请求资源
        /// </summary>
        /// <param name="url">url请求路径</param>
        /// <returns>返回所有数据的List</returns>
        public static string HRequest(string url)
        {
            //LogClass.WriteLog("请求:" + url);
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
            req.Accept = "*/*";
            //req.Accept = "*/*";
            req.Method = "POST";
            req.UserAgent = "Mozilla/5.0";
            req.Timeout = 5000;//5秒未响应即为超时






            WebResponse resp = req.GetResponse();  //&&无法连接到远程服务器未处理 回收服务器内容
            StreamReader sr = new StreamReader(resp.GetResponseStream(), Encoding.UTF8);
            string sReturn = sr.ReadToEnd().Trim();
            return sReturn;


        }


        /// <summary>
        /// 传入body 进行拼接 
        /// </summary>
        /// <param name="bodyHtml">body部分</param>
        /// <param name="serverIp">图片服务器地址</param>
        /// <returns></returns>
        public static string webHttpPack(string bodyHtml, string serverIp)
        {
            string html1 = "<!DOCTYPE html>  <html lang='en' xmlns='http://www.w3.org/1999/xhtml'> <head> <meta charset='utf-8' /> <title></title> </head> <body scroll=no style='background-color:#d7dde0;overflow:-Scroll;overflow-y:hidden'>";
            string html2 = "</body> </html>";
            string html3 = bodyHtml.ToString().Replace('\\', ' ');
            return html1 + html3 + html2;
        }


        public static string HttpPost(string Url, string postDataStr)
        {
            string url = Url;
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
            string s = "要提交的数据";
            byte[] requestBytes = System.Text.Encoding.ASCII.GetBytes(postDataStr);
            req.Method = "POST";
            req.ContentType = "application/x-www-form-urlencoded";
            req.ContentLength = requestBytes.Length;
            Stream requestStream = req.GetRequestStream();
            requestStream.Write(requestBytes, 0, requestBytes.Length);
            requestStream.Close();
            HttpWebResponse res = (HttpWebResponse)req.GetResponse();
            StreamReader sr = new StreamReader(res.GetResponseStream(), System.Text.Encoding.UTF8);
            string backstr = sr.ReadToEnd(); sr.Close(); res.Close();
            return backstr;
        }  
    }
}


调用  string Url="http://192.168.200.42:97/itf/omsInfo?terminalNum=123321";

 string refjson = HttpClass.HRequest(serverUrl);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值