惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
博客园_首页
IT之家
IT之家
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Vercel News
Vercel News
美团技术团队
D
Docker
WordPress大学
WordPress大学
T
Tailwind CSS Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
The Cloudflare Blog
Y
Y Combinator Blog
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
G
Google Developers Blog
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
月光博客
月光博客
MongoDB | Blog
MongoDB | Blog
S
SegmentFault 最新的问题
GbyAI
GbyAI
Hugging Face - Blog
Hugging Face - Blog
Microsoft Azure Blog
Microsoft Azure Blog
A
About on SuperTechFans

博客园 - 青玄鸟

.NET 中优雅处理 Server-Sent Events 请求取消 vue3.0 + ts 实现上传工厂(oss与cos) Dapr 订阅者参数无法正确反序列化问题 .NET 代码整洁手册 Blazor项目通过docker和nginx部署为静态站点的步骤 Moq mock 方法返回null空指针异常 基于接口隔离原则的依赖注入实现 HttpClient with Stream HttpClient partial update 值对象的封装 只读集合类型属性实现 适配器模式 模板模式 最少知识原则 单例模式 抽象工厂 简单工厂、工厂方法、抽象工厂 工厂方法模式 使用 Visual Studio Code创建和执行T-SQL
HttpClient 基本使用
青玄鸟 · 2020-04-28 · via 博客园 - 青玄鸟

Get 请求

    private async Task<List<Demo>> GetResource(HttpClient httpClient)
        {
            var response = await httpClient.GetAsync("api/demos");
            response.EnsureSuccessStatusCode();

            var content = await response.Content.ReadAsStringAsync();
            var demos = JsonConvert.DeserializeObject<List<Demo>>(content);
            return demos;
        }

局部使用自定义请求头

    private async Task<List<Demo>> GetResourceThroughHttpRequestMessage(HttpClient httpClient)
        {
            var request = new HttpRequestMessage(HttpMethod.Get,"api/demos");
            request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));

            var response = await httpClient.SendAsync(request);
            response.EnsureSuccessStatusCode();

            var content = await response.Content.ReadAsStringAsync();
            var serializer = new XmlSerializer(typeof(List<Demo>));
            var demos = (List<Demo>)serializer.Deserialize(new StringReader(content));
            return demos;
        }

Post 请求

简洁方式

    private async Task CreateResource(HttpClient httpClient)
        {
            var demoToCreate = new DemoForCreation()
            {
                Title = "some title",
                Description = "some description"
            };

            var response = await _httpClient.PostAsync(
                "api/demos",
                new StringContent(
                    JsonConvert.SerializeObject(demoToCreate),
                    Encoding.UTF8,
                    "application/json"));
            response.EnsureSuccessStatusCode();

            var content = await response.Content.ReadAsStringAsync();
            var demo = JsonConvert.DeserializeObject<Demo>(content);
        }

HttpRequestMessage 方式

    private async Task CreateResource(HttpClient httpClient)
        {
            var demoToCreate = new DemoForCreation()
            {
                Title = "some title",
                Description = "some description"
            };
            var serializedDemoToCreate = JsonConvert.SerializeObject(demoToCreate);

            var request = new HttpRequestMessage(HttpMethod.Post,"api/demos");
            request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));

            request.Content = new StringContent(serializedDemoToCreate);
            request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            var response = await httpClient.SendAsync(request);
            response.EnsureSuccessStatusCode();
            var content = await response.Content.ReadAsStringAsync();
            var serializer = new XmlSerializer(typeof(Demo));
            var demo = (Demo)serializer.Deserialize(new StringReader(content));
        }