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

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Microsoft Azure Blog
Microsoft Azure Blog
Cloudbric
Cloudbric
I
InfoQ
V
V2EX
博客园_首页
The Register - Security
The Register - Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
S
Secure Thoughts
Vercel News
Vercel News
Forbes - Security
Forbes - Security
云风的 BLOG
云风的 BLOG
PCI Perspectives
PCI Perspectives
L
LINUX DO - 最新话题
D
DataBreaches.Net
H
Hacker News: Front Page
Application and Cybersecurity Blog
Application and Cybersecurity Blog
B
Blog RSS Feed
A
About on SuperTechFans
N
News and Events Feed by Topic
Apple Machine Learning Research
Apple Machine Learning Research
Help Net Security
Help Net Security
Attack and Defense Labs
Attack and Defense Labs
N
Netflix TechBlog - Medium
Spread Privacy
Spread Privacy
F
Full Disclosure
Recorded Future
Recorded Future
AWS News Blog
AWS News Blog
博客园 - 【当耐特】
The Cloudflare Blog
T
Threatpost
T
Tor Project blog
Google DeepMind News
Google DeepMind News
C
CXSECURITY Database RSS Feed - CXSecurity.com
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
M
MIT News - Artificial intelligence
A
Arctic Wolf
C
Check Point Blog
Stack Overflow Blog
Stack Overflow Blog
T
Threat Research - Cisco Blogs
Security Archives - TechRepublic
Security Archives - TechRepublic
Hacker News - Newest:
Hacker News - Newest: "LLM"
WordPress大学
WordPress大学
Cyberwarzone
Cyberwarzone
小众软件
小众软件
C
Cyber Attacks, Cyber Crime and Cyber Security
P
Proofpoint News Feed
Security Latest
Security Latest
The Last Watchdog
The Last Watchdog

博客园 - 青玄鸟

.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));
        }