C#HttpClient或HttpWebRequest类

C#HttpClient或HttpWebRequest类,c#,rest,dotnet-httpclient,C#,Rest,Dotnet Httpclient,目前在我的项目中,我使用HttpWebRequest类来调用任何类型的RESTAPI 像这样 public string Post(string postData) { string resultString = string.Empty; WebRequest req = WebRequest.Create(_serviceEndoint); HttpWebRequest httpWebReq = (HttpWebReques

目前在我的项目中,我使用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)的“更好”方法,而不是手动执行所有操作?

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


另请参阅本文了解更多详细信息:

HttpClient
更简单。当我更喜欢HttpClient而不是其他客户端时,有什么我做不到的吗?