一、异步调用web服务  GetAsync()

  static void Main(string[] args)
{
Console.WriteLine("In main before call to GetData!");
GetData();
Console.WriteLine("Back in main after call to GetData!");
Console.ReadKey();
}
static async void GetData()
{
HttpClient httpClient = new HttpClient();
HttpResponseMessage response = null; response = await httpClient.GetAsync("http://www.baidu.com");
if(response.IsSuccessStatusCode)
{
Console.WriteLine("Response status Code :" + response.StatusCode + " " + response.ReasonPhrase);
string responseBodyAsText = response.Content.ReadAsStringAsync().Result;
Console.WriteLine("Received payload of " + responseBodyAsText.Length + " characters");
Console.WriteLine(responseBodyAsText);
}
}

二、设置或改变请求标题

    static void Main(string[] args)
{
GetData2();
Console.ReadKey();
} static void GetData2()
{
HttpClient httpClient = new HttpClient();
HttpResponseMessage response = null;
httpClient.DefaultRequestHeaders.Add("Accept", "application/json;odata=verbose");
Console.WriteLine("Request Headers:");
EnumerateHeaders(httpClient.DefaultRequestHeaders);
Console.WriteLine();
response = httpClient.GetAsync("http://www.baidu.com").Result;
if (response.IsSuccessStatusCode)
{
Console.WriteLine("Response Headers:");
EnumerateHeaders(response.Headers);
}
}
private static void EnumerateHeaders(HttpHeaders headers)
{
foreach (var header in headers)
{
var value = "";
foreach (var val in header.Value)
{
value = val + " ";
}
Console.WriteLine("Header: " + header.Key + " Value: " + value);
}
}

三、HttpMessageHandler

 class Program
{ static void Main(string[] args)
{
GetData();
Console.ReadKey();
} private static void GetData()
{
HttpClient httpClient = new HttpClient(new MessageHandler("error"));
HttpResponseMessage response = null;
Console.WriteLine();
response = httpClient.GetAsync("http://services.odata.org/Northwind/Northwind.svc/Regions").Result;
Console.WriteLine(response.StatusCode);
}
} public class MessageHandler : HttpClientHandler
{
string displayMessage = "";
public MessageHandler(string message)
{
displayMessage = message;
} protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
{
Console.WriteLine("In DisplayMessageHandler " + displayMessage);
if (displayMessage == "error")
{
var response = new HttpResponseMessage(System.Net.HttpStatusCode.BadRequest);
var tsc = new TaskCompletionSource<HttpResponseMessage>();
tsc.SetResult(response);
return tsc.Task;
}
return base.SendAsync(request, cancellationToken);
} }

C# HttpClient使用 网络(一)的更多相关文章

  1. 基于HttpClient实现网络爬虫~以百度新闻为例

    转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/40891791 基于HttpClient4.5实现网络爬虫请訪问这里:http:/ ...

  2. HttpClient访问网络

    HttpClient项目时Apache提供用于访问网络的类,对访问网络的方法进行了封装.在HttpURlConnection类中的输入输出操作,统一封装成HttpGet.HttpPost.HttpRe ...

  3. .Net Core 3.0后台使用httpclient请求网络网页和图片_使用Core3.0做一个简单的代理服务器

    目标:使用.net core最新的3.0版本,借助httpclient和本机的host域名代理,实现网络请求转发和内容获取,最终显示到目标客户端! 背景:本人在core领域是个新手,对core的使用不 ...

  4. HttpClient客户端网络编程——高可用、高并发

    本文是HttpClient的学习博客,RestTemplate是基于HttpClient的封装,feign可基于HttpClient进行网络通信. 那么作为较底层的客户端网络编程框架,该怎么配置使其能 ...

  5. android 使用httpclient访问网络

    在主活动类中,调用一个线程访问网络(android4.0以上耗时的操作不能放在主线程中):       //声明两个Button对象,与一个TextView对象private TextView mTe ...

  6. HttpClient请求网络数据的Post请求

    new Thread(){            public void run() {                                try { //获得输入框内容          ...

  7. [深入浅出WP8.1(Runtime)]网络编程之HttpClient类

    12.2 网络编程之HttpClient类 除了可以使用HttpWebRequest类来实现HTTP网络请求之外,我们还可以使用HttpClient类来实现.对于基本的请求操作,HttpClient类 ...

  8. Java基础知识强化之网络编程笔记18:Android网络通信之 使用HttpClient的Post / Get 方式读取网络数据(基于HTTP通信技术)

    使用HttpClient进行Get方式通信,通过HttpClient建立网络链接,使用HttpGet方法读取数据,并且通过Response获取Entity返回值. 使用HttpClient进行Post ...

  9. 网络编程之HttpClient类(转)

    12.2 网络编程之HttpClient类 除了可以使用HttpWebRequest类来实现HTTP网络请求之外,我们还可以使用HttpClient类来实现.对于基本的请求操作,HttpClient类 ...

随机推荐

  1. pytorch安装问题

    目录 1.版本 2.pytorch调试中出现的Module 'torch' has no 'zero' member如何解决 3.No module named 'numpy.core._multia ...

  2. DB2 数据库权限

    以下内容转载:  http://blog.csdn.net/xiyuan1999/article/details/8135263 DB2中的权限 DB2 中有三种主要的安全机制,可以帮助 DBA 实现 ...

  3. 【AtCoder】CODE FESTIVAL 2016 qual B

    CODE FESTIVAL 2016 qual B A - Signboard -- #include <bits/stdc++.h> #define fi first #define s ...

  4. 监控 Kubernetes 集群应用

    Prometheus的数据指标是通过一个公开的 HTTP(S) 数据接口获取到的,我们不需要单独安装监控的 agent,只需要暴露一个 metrics 接口,Prometheus 就会定期去拉取数据: ...

  5. Django的URLconf

    URL 概要 我们要在Django项目中为应用程序设计URL,我们可以创建一个名为URLconf(通常为urls.py)的Python模块.这个模块是纯Python代码,是一个简单的正则表达式到Pyt ...

  6. Codeforces 1247D. Power Products

    传送门 要满足存在 $x$ ,使得 $a_i \cdot a_j = x^k$ 那么充分必要条件就是 $a_i \cdot a_j$ 质因数分解后每个质因数的次幂都要为 $k$ 的倍数 证明显然 设 ...

  7. MySQL 数据库面试题

    原文出处:https://juejin.im/post/5a9ca0d6518825555c1d1acd 作者:Java3y 本文在原文基础上进行修改,而且没有特定针对MySQL. 一.存储过程(以及 ...

  8. 数据库优化方案之SQL脚本优化

    随着数据库数据越来越大,数据单表存在的数据量也就随之上去了,那么怎么样让我们的脚本查询数据更快呢? 在这个地方我们主要提到两个数据库类型: 1.MSSQL(该数据库我们通过执行计划来查看数据库性能在哪 ...

  9. 使用.Net Core 2.2创建windows服务

    使用.Net Core 2.2创建windows服务 我的环境 win 10 home Visual Studio 2019 v16.1.3 安装有.net core 2.2 创建项目 编辑项目文件 ...

  10. iview表单验证数字

    验证输入字符串必须为数字 html: <FormItem label="兑换积分:" prop="exchangeIntegral"> <In ...