c#后台直接发起http请求

 /// <summary>
    /// 操作方法
    /// </summary>
    public class GetHttpHelper {

        private static readonly string DefaultUserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";


        /// <summary>
        /// Get方法获取Json数据
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public static string GetHttpResponseJson(string url, IWebProxy webProxy)
        {
            string json = string.Empty;
            Encoding encoding = Encoding.UTF8;
            HttpWebResponse Response = CreateGetHttpResponse(new HttpGetParametersModel()
            {
                Url = url,
                WebProxy = webProxy
            });
            json = GetStream(Response, encoding);
            return json;
        }


        /// <summary>
        /// 创建GET方式的HTTP请求
        /// </summary>
        /// <param name="url">请求的URL</param>
        /// <param name="timeout">请求的超时时间</param>
        /// <param name="userAgent">请求的客户端浏览器信息,可以为空</param>
        /// <param name="cookies">随同HTTP请求发送的Cookie信息,如果不需要身份验证可以为空</param>
        /// <returns></returns>
        public static HttpWebResponse CreateGetHttpResponse(HttpGetParametersModel getParametersModel)
        {
            if (string.IsNullOrEmpty(getParametersModel.Url))
            {
                throw new ArgumentNullException("getParametersModel.Url");
            }
            HttpWebRequest request = WebRequest.Create(getParametersModel.Url) as HttpWebRequest;
            if (getParametersModel.WebProxy != null)
            {
                request.Proxy = getParametersModel.WebProxy;
            }
            request.Method = "GET";
            request.UserAgent = DefaultUserAgent;
            if (!string.IsNullOrEmpty(getParametersModel.UserAgent))
            {
                request.UserAgent = getParametersModel.UserAgent;
            }
            if (getParametersModel.Timeout.HasValue)
            {
                request.Timeout = getParametersModel.Timeout.Value;
            }
            if (getParametersModel.Cookies != null)
            {
                request.CookieContainer = new CookieContainer();
                request.CookieContainer.Add(getParametersModel.Cookies);
            }
            return request.GetResponse() as HttpWebResponse;
        }
        /// <summary>
        /// 将response转换成文本
        /// </summary>
        /// <param name="response"></param>
        /// <param name="encoding"></param>
        /// <returns></returns>
        private static string GetStream(HttpWebResponse response, Encoding encoding)
        {
            try
            {
                if (response.StatusCode == HttpStatusCode.OK)
                {
                    switch (response.ContentEncoding.ToLower())
                    {
                        case "gzip":
                            {
                                string result = Decompress(response.GetResponseStream(), encoding);
                                response.Close();
                                return result;
                            }
                        default:
                            {
                                using (StreamReader sr = new StreamReader(response.GetResponseStream(), encoding))
                                {
                                    string result = sr.ReadToEnd();
                                    sr.Close();
                                    sr.Dispose();
                                    response.Close();
                                    return result;
                                }
                            }
                    }
                }
                else
                {
                    response.Close();
                }
            }
            catch (Exception e)
            {
                throw e;
            }
            return "";
        }
        private static string Decompress(Stream stream, Encoding encoding)
        {
            byte[] buffer = new byte[100];
            //int length = 0;

            using (GZipStream gz = new GZipStream(stream, CompressionMode.Decompress))
            {
                //GZipStream gzip = new GZipStream(res.GetResponseStream(), CompressionMode.Decompress);
                using (StreamReader reader = new StreamReader(gz, encoding))
                {
                    return reader.ReadToEnd();
                }

            }
        }


    }



    #region GET/POST请求参数模型

    /// <summary>
    /// GET请求参数模型
    /// </summary>
    public class HttpGetParametersModel
    {
        /// <summary>
        /// 请求的URL(GET方式就附加参数)
        /// </summary>
        public string Url { get; set; }

        /// <summary>
        /// 超时时间
        /// </summary>
        public int? Timeout { get; set; }

        /// <summary>
        ///浏览器代理类型
        /// </summary>
        public string UserAgent { get; set; }

        /// <summary>
        /// Web请求代理
        /// </summary>
        public IWebProxy WebProxy { get; set; }

        /// <summary>
        /// Cookies列表
        /// </summary>
        public CookieCollection Cookies { get; set; }
    }

    /// <summary>
    /// POST请求参数模型
    /// </summary>
    public class HttpPostParametersModel : HttpGetParametersModel
    {
        /// <summary>
        /// POST参数字典
        /// </summary>
        public IDictionary<string, string> DictParameters { get; set; }

        /// <summary>
        /// 发送HTTP请求时所用的编码
        /// </summary>
        public Encoding RequestEncoding { get; set; }
    }

    #endregion GET/POST请求参数模型

调用方式:

        try
        {
            string url = " http://music.163.com/api/playlist/detail?id=58451795";
         object obj=  GetHttpResponseJson(url, null);
        }
        catch (Exception e)
        {

        }
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在C#发起HTTP请求,可以使用HttpWebRequest类或HttpClient类。使用HttpWebRequest类时,可以按照以下步骤进行操作: 1. 创建一个HttpWebRequest实例,并设置请求的URL: ``` HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); ``` 2. 设置请求的方法(GET、POST等): ``` request.Method = "GET"; ``` 3. 设置请求头(可选): ``` request.Headers.Add("key", "value"); ``` 4. 发送请求并获取响应: ``` using (WebResponse response = request.GetResponse()) { // 读取响应数据 using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) { string content = reader.ReadToEnd(); // 对响应数据进行处理 // ... } } ``` 另外,还可以使用HttpClient类来发起HTTP请求,代码示例如下: ```csharp using (HttpClient client = new HttpClient()) { HttpResponseMessage response = await client.GetAsync(url); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); // 对响应数据进行处理 // ... } } ``` 以上是两种常用的C#发起HTTP请求的方法。可以根据具体需求选择其中一种来实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [C#实现发送简单HTTP请求的方法](https://download.csdn.net/download/weixin_38688352/12806593)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [C# 发送http网络请求](https://blog.csdn.net/weixin_44517477/article/details/121725560)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [C#发起http的GET/POST请求并处理响应,及其函数封装](https://blog.csdn.net/qq_40649350/article/details/118682995)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值