一、异步调用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. Java编程思想(二)一切都是对象

    2.1用句柄操纵对象 尽管一切都看作是对象,但是操纵的标识符实际上是指向一个对象的“句柄”(handdle): 拥有一个句柄并不表示必须有一个对象同他连接: String  s:   这里创建的只是句 ...

  2. 粒子群算法(PSO)

    这几天看书的时候看到一个算法,叫粒子群算法,这个算法挺有意思的,下面说说我个人的理解: 粒子群算法(PSO)是一种进化算法,是一种求得近似最优解的算法,这种算法的时间复杂度可能会达到O(n!),得到的 ...

  3. session和cookie区别,多台WEB服务器如何共享session,禁用COOKIE后SESSION是否可用,为什么?

    答:session的运行机制: 用户A访问站点Y,如果站点Y指定了session_start();(以下假设session_start()总是存在)那么会产生一个session_id,这个sessio ...

  4. selenium (二)

    文件上传: 对于通过input标签实现的上传功能,可以将其看作是一个输入框,即通过send_keys()指定本地文件路径的方式实现文件上传 创建upfile.html文件,代码如下: <html ...

  5. HeidiSQL 导入Excel数据

    一 前言 原文出处:http://blog.csdn.net/qq_27727681/article/details/53944744 二 效果演示: 2000多条数据,顺利导入成功. 三  实现方法 ...

  6. win10下搭建vue开发环境

    特别说明:下面任何命令都是在windows的命令行工具下进行输入,打开命令行工具的快捷方式如下图:     详细的安装步骤如下: 一.安装node.js 说明:安装node.js的windows版本后 ...

  7. sql server的循环语句

    WITH TEST_CTEAS(SELECT id,position,Parentid,Cast(Parentid AS NVARCHAR(4000)) AS PATHFROM op_client_s ...

  8. async/await 的引用

    static async void Start() { string s = "ass"; Console.WriteLine(getMemory(s)+"Hello W ...

  9. sonarqube执行命令遇上的小问题

    在安装好sonarqube,本地或是服务器上都是可疑正常运行的情况下. 这一次我重新上传,修改配置SonarQube.Analysis.xml,sonar.host.url的值已经改为服务器上的,执行 ...

  10. HDR10 中的名词解释

    1. EOTF ( Electro-Optical Transfer Function ),电->光 转换函数.由电信号,转换成光信号时的规则.确定显示终端(电视机.投影仪等),如何合理地响应输 ...