网上找到的不错的C# httpRequestHelper

网上找到的不错的C# httpRequestHelper

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

/// <summary>
/// http请求
/// </summary>
public class HttpRequestHelper
{
    #region Get

    /// <summary>
    /// Get请求
    /// </summary>
    /// <param name="url">请求url</param>
    /// <returns></returns>
    public static string Get(string url)
    {
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
        req.Method = "GET";
        req.Timeout = 3000;

        if (req == null || req.GetResponse() == null)
            return string.Empty;

        HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
        if (resp == null)
            return string.Empty;

        using (Stream stream = resp.GetResponseStream())
        {
            using (StreamReader reader = new StreamReader(stream))
            {
                return reader.ReadToEnd();
            }
        }
    }

    /// <summary>
    /// Get请求
    /// </summary>
    /// <param name="url"></param>
    /// <param name="headerKey"></param>
    /// <param name="headerValue"></param>
    /// <returns></returns>
    public static string Get(string url, string headerKey, string headerValue)
    {
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
        req.Method = "GET";
        req.Timeout = 3000;
        req.Headers[headerKey] = headerValue;

        if (req == null || req.GetResponse() == null)
            return string.Empty;

        HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
        if (resp == null)
            return string.Empty;

        using (Stream stream = resp.GetResponseStream())
        {
            using (StreamReader reader = new StreamReader(stream))
            {
                return reader.ReadToEnd();
            }
        }
    }

    #endregion

    #region Post

    /// <summary>
    /// Post请求
    /// </summary>
    /// <param name="url">接口url</param>
    /// <returns></returns>
    public static string Post(string url)
    {
        string result = string.Empty;
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
        req.Method = "POST";
        req.Timeout = 3000;

        HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
        Stream stream = resp.GetResponseStream();
        using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
        {
            result = reader.ReadToEnd();
        }
        return result;
    }

    /// <summary>
    /// Post请求
    /// </summary>
    /// <param name="url">接口url</param>
    /// <param name="postData"></param>
    /// <returns></returns>
    public static string Post(string url, object postData)
    {
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
        req.Method = "POST";
        req.ContentType = "application/json";
        req.Timeout = 3000;

        if (req == null)
            return string.Empty;

        byte[] data = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(postData));
        //注意:无需手动指定长度 (否则可能会报流未处理完就关闭的异常,因为ContentLength时候会比真实post数据长度大)
        //req.ContentLength = data.Length;
        using (Stream reqStream = req.GetRequestStream())
        {
            reqStream.Write(data, 0, data.Length);
        }

        HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
        if (resp == null)
            return string.Empty;

        using (Stream stream = resp.GetResponseStream())
        {
            using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
            {
                return reader.ReadToEnd();
            }
        }
    }

    /// <summary>
    /// Post请求
    /// </summary>
    /// <param name="url">接口url</param>
    /// <param name="dic">参数</param>
    /// <returns></returns>
    public static string Post(string url, Dictionary<string, string> dic)
    {
        string result = string.Empty;
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
        req.Method = "POST";
        req.ContentType = "application/x-www-form-urlencoded";
        req.Timeout = 3000;

        StringBuilder builder = new StringBuilder();
        int i = 0;
        foreach (var item in dic)
        {
            if (i > 0)
                builder.Append("&");
            builder.AppendFormat("{0}={1}", item.Key, item.Value);
            i++;
        }
        byte[] data = Encoding.UTF8.GetBytes(builder.ToString());
        req.ContentLength = data.Length;
        using (Stream reqStream = req.GetRequestStream())
        {
            reqStream.Write(data, 0, data.Length);
            reqStream.Close();
        }

        HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
        Stream stream = resp.GetResponseStream();
        //获取响应内容
        using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
        {
            result = reader.ReadToEnd();
        }
        return result;
    }

    /// <summary>
    /// Post请求(基于raw)
    /// </summary>
    /// <param name="url">接口url</param>
    /// <param name="json">raw的json参数</param>
    /// <returns></returns>
    public static async Task<string> Post(string url, string json)
    {
        using (HttpClient client = new HttpClient())
        {
            using(var content = new StringContent(json, Encoding.UTF8, "application/json"))
            {
                using (HttpResponseMessage response = await client.PostAsync(url, content))
                {
                    if (response.IsSuccessStatusCode)
                    {
                        string responseContent = await response.Content.ReadAsStringAsync();
                        return responseContent;
                    }
                    else
                    {
                        Console.WriteLine("请求失败,状态码:" + response.StatusCode);
                        return null;
                    }
                }
            }
        }
    }

    /// <summary>
    /// Post请求
    /// </summary>
    /// <param name="url"></param>
    /// <param name="dic"></param>
    /// <param name="headerKey"></param>
    /// <param name="headerValue"></param>
    /// <returns></returns>
    public static string Post(string url, Dictionary<string, string> dic, string headerKey, string headerValue)
    {
        string result = string.Empty;
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
        req.Method = "POST";
        req.ContentType = "application/x-www-form-urlencoded";
        req.Timeout = 3000;
        req.Headers[headerKey] = headerValue;

        StringBuilder builder = new StringBuilder();
        int i = 0;
        foreach (var item in dic)
        {
            if (i > 0)
                builder.Append("&");
            builder.AppendFormat("{0}={1}", item.Key, item.Value);
            i++;
        }
        byte[] data = Encoding.UTF8.GetBytes(builder.ToString());
        req.ContentLength = data.Length;
        using (Stream reqStream = req.GetRequestStream())
        {
            reqStream.Write(data, 0, data.Length);
            reqStream.Close();
        }

        HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
        Stream stream = resp.GetResponseStream();
        //获取响应内容
        using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
        {
            result = reader.ReadToEnd();
        }
        return result;
    }

    #endregion
}

转自:https://blog.csdn.net/qq_38693757/article/details/131330883
非常感谢~

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注