C# 发送 get 请求

using System;
using System.IO;
using System.Net;
using System.Text;
using System.Threading;
using System.Timers;
using Topshelf;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Topshelf.HostFactory.Run(Handler);
        }

        /// <summary>
        /// 部署说明
        /// 1发布成自包含类库方式
        /// 2使用管理员运行Dos命令行
        /// 3完整exe路径 install(安装)  uninstall(卸载)
        /// 4去到服务找到对应的服务进行启动
        /// </summary>
        /// <param name="cfg"></param>
        static void Handler(Topshelf.HostConfigurators.HostConfigurator cfg)
        {
            cfg.Service<MyServiceMethod>(x =>
            {
                // 指定服务类型。这里设置为 MKAutoDataService
                x.ConstructUsing(name => new MyServiceMethod());
                // 当服务启动后执行的方法
                x.WhenStarted(tc => tc.Start());
                // 当服务停止后执行的方法
                x.WhenStopped(tc => tc.Stop());
            });

            // 服务用本地系统账号来运行
            cfg.RunAsLocalSystem();

            // 服务描述信息
            cfg.SetDescription("ZZ Send Get");

            // 服务显示名称
            cfg.SetDisplayName("ZZ Send Get");

            //服务名称
            cfg.SetServiceName("ZZ Send Get");
        }
    }

    public class MyServiceMethod
    {
        System.Timers.Timer t;
        int count = 0;

        public void Start()
        {
            t = new System.Timers.Timer(3 * 1000); //实例化Timer类,设置间隔时间为10000毫秒
            t.Elapsed += new System.Timers.ElapsedEventHandler(AutoSendGet); //到达时间的时候执行事件
            t.AutoReset = true; //设置是执行一次(false)还是一直执行(true)
            t.Enabled = true; //是否执行System.Timers.Timer.Elapsed事件
            t.Start();

            //采用该方式,如果把时间间隔设置得太长(如1分钟),程序执行一次就不继续执行了
            //Thread tAutoData = new Thread(AutoData);
            //tAutoData.Start();
        }

        private void AutoSendGet(object sender, ElapsedEventArgs e)
        {            
            //while (true)
            //{

            string url = "https://www.baidu.com/s?ie=utf-8&mod=rsv_pq=a6a4e06800086c8e&rsv_t=b8a8fvuBj14VOFtRCP2AcY8KugmX9Bp4MUU%2FWiko2QFvY%2B00MjCZSgTwncs&rqlang=cn&rsv_enter=0&rsv_dl=tb&rsv_btype=t&bs=%E8%88%AA%E5%A4%A9%E5%8D%8E%E6%8B%93%E7%89%9B%E9%80%BC&rsv_sid=undefined&_ss=1&clist=d159b230be3ad807&hsug=&f4s=1&csor=6&_cr1=36807";
            int statusCode = 0;
            string res = GetHttpResponse(url, 6000, out statusCode);
            if (res != null)
            {
                count++;
                Console.WriteLine("count:" + count + ",statusCode:" + statusCode);
                //T mes = JsonHelper.DeserializeJsonToObject<T>(res)
            }

            //    Thread.Sleep(2 * 1000);
            //}
        }

        public void Stop()
        {
            t.Stop();
        }

        public static string GetHttpResponse(string url, int Timeout, out int statusCode)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "GET";
            request.ContentType = "text/html;charset=UTF-8";
            request.UserAgent = null;
            request.Timeout = Timeout;

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream myResponseStream = response.GetResponseStream();
            statusCode = (int)response.StatusCode;
            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
            string retString = myStreamReader.ReadToEnd();
            myStreamReader.Close();
            myResponseStream.Close();

            return retString;
        }
    }
}
原文地址:https://www.cnblogs.com/hellowzl/p/14364578.html