找回密码
 立即注册

QQ登录

只需一步,快速开始

工控课堂 首页 工控文库 上位机编程 查看内容

C# 发出异步的Get请求

2022-4-15 09:50| 发布者: gkket| 查看: 1171| 评论: 0

摘要: 以下文章来源于Dotnet讲堂 ,作者Dotnet讲堂Dotnet讲堂.这里是Dotnet编程的乐园,如果你对C# Winfom感兴趣,你想学习wpf编写酷炫的界面通过mvvm模式实现前后端解耦,你热衷于智能制造、工控上位机,资深高工带你入坑 ...

以下文章来源于Dotnet讲堂 ,作者Dotnet讲堂

Dotnet讲堂.

这里是Dotnet编程的乐园,如果你对C# Winfom感兴趣,你想学习wpf编写酷炫的界面通过mvvm模式实现前后端解耦,你热衷于智能制造、工控上位机,资深高工带你入坑。

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

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

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


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


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


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


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

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


注意:

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

关注公众号,加入500人微信群,下载100G免费资料!

最新评论

热门文章
关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-23 06:35 , Processed in 0.080372 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

返回顶部