C# HttpClient or HttpWebRequest class

本文关键字:class HttpWebRequest or HttpClient | 更新日期: 2023-09-27 18:00:12

目前在我的项目中,我使用HttpWebRequest类来调用任何类型的RESTAPI。

像这个

    public string Post(string postData)
    {
        string resultString = string.Empty;
        WebRequest req = WebRequest.Create(_serviceEndoint);
        HttpWebRequest httpWebReq = (HttpWebRequest)req;
        httpWebReq.CookieContainer = _cookieContainer;
        req.ContentType = "application/xml";
        req.Method = "POST";
        req.Credentials = new NetworkCredential("Administrator", "Password");
        try
        {
            Stream requestStream = req.GetRequestStream();
            UTF8Encoding encoding = new UTF8Encoding();
            byte[] bytes = encoding.GetBytes(postData);
            requestStream.Write(bytes, 0, bytes.Length);
            HttpWebResponse resp = req.GetResponse() as HttpWebResponse;
            if (resp.StatusCode == HttpStatusCode.OK)
            {
                using (Stream respStream = resp.GetResponseStream())
                {
                    StreamReader reader = new StreamReader(respStream, Encoding.UTF8);
                    resultString = reader.ReadToEnd();
                }
            }
        }
        catch (Exception ex)
        {
            resultString = ex.ToString();
        }
        return resultString;
    }

正在工作:)但我对这种相当新的方式感到好奇。HttpClient类有什么缺点吗(你的经验、观点)?

目前,使用该类是否是调用rest服务(get、post、put、delete)的"更好"方式,而不是手动执行所有操作?

C# HttpClient or HttpWebRequest class

HttpClient的优点是它更简单,并且在大多数可移植类库配置文件上都支持它。缺点是它不支持非http请求,WebRequest支持这种请求。换句话说,HttpClientHttpWebRequest的替代品,但不存在FtpWebRequest等的替代品。

有关更多详细信息,请参阅本文:HttpClient与HttpWebRequest