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;
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM