• 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;
            }
        }
    }
  • 相关阅读:
    DataTable.Load技巧,多结果集查询
    sql编写小技巧
    最近学习记录
    分享layui的table的一些小技巧,前端分页
    WTM框架在开发过程中如何动态迁移表和创建表
    .net core cookie滑动过期设置
    在使用DapperExtensions时遇到"其他信息: ConnectionString 属性尚未初始化。"错误
    在域环境中客户端三次输入密码错误锁定方法(原创)
    共享打印机提示0x000006cc的解决方法
    win10 1909版本用ultraISO做启动U盘,写入只有1g不到
  • 原文地址:https://www.cnblogs.com/hellowzl/p/14364578.html
Copyright © 2020-2023  润新知