c# - HttpContent 中 ReadAsAsync 方法的替代方法

标签 c# asp.net-mvc asp.net-web-api httpclient

我正在使用 Microsoft.AspNet.WebApi.Client在我的 ASP.MVC 5 项目中使用休息服务。我正在关注 this使用 HttpClient 的教程。代码未编译,因为 ReadAsAsync 方法在 HttpContent 中不再可用。经过一番挖掘后,我开始知道它是 System.Net.Http.Formatting.dll 中定义的扩展方法。我为同一个 dll 找到了一个 nuget 包 here但该软件包已被弃用,我无法安装它。我还尝试根据 this 在 Program Files 文件夹中搜索该 dll。发布但我无法得到它。任何想法如何使 ReadAsAsync 工作?非常感谢任何帮助。谢谢。

最佳答案

您需要做的是添加新的引用 System.Net.HttpClient;System.Net.HttpClient.Formating;

这是我在 HttpClient 中的示例代码:

以下代码用于使用 HttpClient 从 saba 获取证书。

using System.Net.Http;
using System.Net.Http.Headers;
using GoSaba.Models.Saba;

namespace GoSaba.Controllers.Saba
{
    class LoginController
    {
        //HTTP GET: Saba/api/login
        public async Task<string> GetCertificate(string host, string user, string password, string site)
        {
            StringBuilder getCertificate = new StringBuilder();

            if(!string.IsNullOrEmpty(host))
            {
                using(var httpClient = new HttpClient())
                {
                    httpClient.BaseAddress = new Uri(string.Format("http://{0}/", host));
                    httpClient.DefaultRequestHeaders.Accept.Clear();
                    httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    httpClient.DefaultRequestHeaders.Add("user", user);
                    httpClient.DefaultRequestHeaders.Add("password", password);
                    httpClient.DefaultRequestHeaders.Add("site", site);

                    HttpResponseMessage httpResponse = await httpClient.GetAsync("Saba/api/login");

                    if(httpResponse.IsSuccessStatusCode)
                    {
                        LoginModel.GetCertificate saba = await httpResponse.Content.ReadAsAsync<LoginModel.GetCertificate>();//LoginModel.GetCertificate is model.
                        getCertificate.Append(saba.certificate);
                    }
                }
            }

            return getCertificate.ToString();
        }
    }
}

您可以将此作为如何使用 HttpClient 的引用。

关于c# - HttpContent 中 ReadAsAsync 方法的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26624484/

相关文章:

c# - 可以在 .NET (C#/VB) 中打开/操作 Java Web 应用程序吗?

c# - 多台服务器上的批处理

asp.net - 将 MVC 2 项目升级到 MVC 5

c# - 带 View 的 BaseController

c# - ASP.NET MVC Core 3.0 - 为什么来自主体的 API 请求不断返回!ModelState.IsValid?

c# - 项目加载问题

c# - 尝试连接到 .sdf 数据库时出现异常

asp.net-mvc - Postman 4.9.3 - 没有拦截器开关

c# - 在 Web Api 中找到与请求匹配的多个操作

authentication - 在azure上部署后授权不起作用