C# 发出异步的Get请求

8c0578d7c6a6fb43160cfc3d4e76920f.png

下列的下载代码示例是 HttpClientSample。它以不同的方式异步调用Web 服务。为了演示本例使用的不同方法,使用了命令行参数。

示例代码使用了以下名称空间:

System
System.Linq 
System.Net
System.Net.Http
System.Net.Http.Headers 
System.Threading
System.Threading.Tasks

f8bda77920d69cd6d6ae40abd399c8e6.png

第一段代码实例化一个 HttpClient 对象,把它赋予私有字段 _httpClient,以进行重用。这个 HttpClient 对象是线程安全的,所以一个 HttpClient 对象就可以用于处理多个请求。HttpClient 的每个实例都维护它自己的线程池,所以 HttpClient 实例之间的请求会被隔离。

0e73dcf5022c54b0a6301af564068ad7.png

接着调用 GetAsync,给它传递要调用的方法的地址,把一个 HTTP GET 请求发送给服务器。GetAsync 调用被重载为带一个字符串或 URI 对象。

06f16ed682947ac380652ca640a7a16a.png

对GetAsync 的调用返回一个HttpResponseMessage 对象。HttpResponseMessage 类表示包含标题、状态和内容的响应。检查响应的IsSuccessfulStatusCode属性,可以确定请求是否成功。如果调用成功,就使用 ReadAsStringAsync 方法把返回的内容检索为一个字符串:

private const string NorthwindUrl ="http://services.data.org/Northwind/Northwind.svc/Regions"; 
private const string IncorrectUrl ="http://services.data.org/Northwind1/Northwind.svc/Regions";private HttpClient _httpClient; 
public HttpClient HttpClient =>_httpClient ?? (_httpClient = new HttpClient());private async Task GetDataSimpleAsync()
{HttpResponseMessage response = await HttpClient.GetAsync(NorthwindUrl); if(response.IsSuccessStatusCode){Console.WriteLine($"Response Status Code: {(int)response.StatusCode} " +$"{response.ReasonPhrase}") ;string responseBodyAsText =await response.Content.ReadAsStringAsyne();Console.WriteLine($"Received payload of {responseBodyAsText.Length} characters");Console.WriteLine();Console.WriteLine(responseBodyAsText);}}
}

cd2bd08f9b3a89d2cf0fce47b5dcb78f.png

用命令行参数 -s 执行这段代码,产生以下输出: 

Response Status Code: 200 OK
Received payload of 3379 characters
<?xml version="1.0" encoding="utf-8"?>
<!- ... ->

a623d33d74ff707dce28ff0b57061496.png

注意:

因为 HttpClient 类使用 GetAsync 方法调用,且使用了 await 关键字,所以返回调用线程,并可以执行其他工作。GetAsync 方法的结果可用时,就用该方法继续线程,响应写入 response 变量。

4f3fd86ca9b8708ef2bdeadb267b2f4b.png

2aa257940191660ac1a04d8b7bcae737.png

 微信公众号 

Dotnet讲堂

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289235.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python用pandas读取excel_Python使用pandas读取Excel文件数据和预处理小案例

假设有Excel文件data.xlsx&#xff0c;其中内容为 现在需要将这个Excel文件中的数据读入pandas&#xff0c;并且在后续的处理中不关心ID列&#xff0c;还需要把sex列的female替换为1&#xff0c;把sex列的male替换为0。本文演示有关的几个操作。 &#xff08;1&#xff09;导入…

shader 3 rendering path

渲染通道&#xff0c; rendering path。 vertexlit&#xff0c; forward 和 Deferred lighting 旧有的非统一架构下&#xff1a; 分为顶点着色引擎和像素渲染通道 渲染通道是GPU负责给图像配色的专门通道&#xff1b; 越多&#xff0c;填充效率越高&#xff0c;流畅性越好。 ht…

《帝王三部曲》——二月河

前一段时间断断续续的在看二月河写的《帝王三部曲》中的《雍正王朝》。写的真棒&#xff01;然后又迫不及待地去读远上搜索下载了三部曲全本&#xff0c;可惜&#xff0c;下载到现在一直未去看…… 生活总是这样&#xff0c;忙忙碌碌的……欲望太多。 希望自己以后做事情&#…

React Native之Props(属性)和State(状态)和简单样式简单使用

1 Props(属性)和State(状态)和简单样式简单使用App.js代码如下 /*** Sample React Native App* https://github.com/facebook/react-native** format* flow*/import React, {Component} from react; import {Platform, StyleSheet, Text, View, NativeModules, DeviceEvent…

解决SQL Server 2005数据库中datetime时间字段在前端显示时分秒的问题

SQL Server 2005中时间类型datetime的格式是“年月日时分秒”,直接读出来该字段,为了不让它在前端显示“时分秒”若是显示在dataGridView中,可以修改控件的某一列格式,如: dataGridView1.Columns[10].DefaultCellStyle.Format = "yyyy-MM-dd"; 但是要在listview…

config kubectl_Kubernetes(k8s)中文文档 kubectl config set-context_Kubernetes中文社区

译者&#xff1a;hurf在kubeconfig配置文件中设置一个环境项。摘要在kubeconfig配置文件中设置一个环境项。 如果指定了一个已存在的名字&#xff0c;将合并新字段并覆盖旧字段。kubectl config set-context NAME [--clustercluster_nickname] [--useruser_nickname] [--namesp…

Linux文件系统基础(1)

本文首发于http://oliveryang.net&#xff0c;转载时请包含原文或者作者网站链接。 1. 什么是文件系统 直接引用来自维基百科文件系统的定义&#xff0c; A file system is a set of abstract data types that are implemented for the storage, hierarchical organization, ma…

使用基于Roslyn的编译时AOP框架来解决.NET项目的代码复用问题

理想的代码优化方式团队日常协作中&#xff0c;自然而然的会出现很多重复代码&#xff0c;根据这些代码的种类&#xff0c;之前可能会以以下方式处理方式描述应用时可能产生的问题硬编码多数新手&#xff0c;或逐渐腐坏的项目会这么干&#xff0c;会直接复制之前实现的代码带来…

React Native之Flexbox布局和监测文本输入onChangeText

1 Flexbox布局 1) flexDirection 可以决定布局的主轴,子元素是应该沿着水平轴(row)方向排列&#xff0c;还是沿着竖直轴(column)方向排列 2) justifyContent 决定其子元素沿着次轴&#xff08;与主轴垂直的轴&#xff0c;比如若主轴方向为row&#xff0c;则次轴方向为…

半年总结——欲戴王冠,必承其重

【Introduction】 每一个女生都梦想着作为一个女王。但是你仅仅看到了女王头上金闪闪的王冠&#xff0c;却不知道在这个王冠下。她是怎样成长的&#xff01;假设你想要做到有女王一样的权利&#xff0c;就必需要承担一个女王应该做到的事情&#xff01;——欲带王冠&#xff0c…

SQL日期时间格式自由转换大全

日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-02-01 08:02/*时间一般为getdate()函数或数据表里的字段*/ CONVERT(varchar(10), 时间一, 23) 结果:2007-02-01 /*varchar(10)表示日期输出的格式,如果不够长会发生截取*/

一维数组和二维数组的区别_数组指针和指针数组的区别

数组指针和指针数组的区别 - hongcha_717 - 博客园​www.cnblogs.com数组指针&#xff08;也称行指针&#xff09;定义 int (*p)[n];()优先级高&#xff0c;首先说明p是一个指针&#xff0c;指向一个整型的一维数组&#xff0c;这个一维数组的长度是n&#xff0c;也可以说是p的…

mysql 配置多个数据库连接_总结MySQL修改最大连接数的两个方式

问题在使用MySQL数据库的时候&#xff0c;经常会遇到这么一个问题&#xff0c;就是“Can not connect to MySQL server. Too many connections”-mysql 1040错误&#xff0c;这是因为访问MySQL且还未释放的连接数目已经达到MySQL的上限。通常&#xff0c;mysql的最大连接数默认…

饿了么超级会员,年卡低至108元!饿了么会员,点外卖超省钱!

饿了么是大家常用的外卖平台&#xff0c;经常点外卖的朋友&#xff0c;充个饿了么超级吃货卡&#xff0c;还是能省不少钱的&#xff0c;今天给大家带来饿了么会员特价充值&#xff0c;会员秒到&#xff01;饿了么超级会员特价充值月卡&#xff1a;原价15元&#xff0c;特价仅需…

React Native之内部方法常用几种写法和调用规则

1 简单部分代码 export default class App extends Component<Props> {render() {return (<View style{styles.container}><View style{styles.welcome}><Button onPress{this.showMsg}titleprees me showMsg/> <Button onPress{() > {this.sho…

阿里云欧洲数据中心开放运营:与沃达丰达成战略合作

摘要&#xff1a;近日&#xff0c;阿里云在德国宣布正式登陆欧洲市场&#xff0c;其位于欧洲的数据中心正式开放运营&#xff0c;同时与沃达丰达成战略合作&#xff0c;携手为欧洲提供云计算服务&#xff0c;并为中国企业进入欧洲市场提供互联网基础设施便利。 据悉&#xff0c…

C#ListView控件添加复选框并获取选中的数目

1、添加复选框:listView1.CheckBoxes = true; 2、选中listview并获取选中的数目: private void listView1_ItemChecked(object sender, ItemCheckedEventArgs e){e.Item.Selected = e.Item.Checked;m = listView1.CheckedItems.Count;label1.Text = "当前选中数:"…

MFS学习总结

MFS学习总结 MFS概述、特性和新版改进MFS 工作原理和设计架构MFS的安装、部署、配置MFS的高级特性MFS的性能测试MFS集群的维护MFS的常见问题和建议对策一、MFS概述、特性和新版改进 MooseFS是一个分布式存储的框架&#xff0c;其具有如下特性&#xff1a; Free(GPL)通用文件系统…

python打开csv文件乱码_python脚本解决csv文件用excel打开乱码

import os path csv文件路径 targetPath 转换编码保存路径 def getfiles(path): path_collection[] for dirpath,dirnames,filenames in os.walk(path): for file in filenames: fullpathos.path.join(dirpath,file) path_collection.append(fullpath) return path_collection…

Linux - 命令

1、查看目录下有什么文件/目录操作 > ls //list列出目录文件的信息 > ls -l //list -list 以“详细信息”查看目录文件 > ls -a //list -all查看目录“全部&#xff08;包括隐藏文件&…