一、HttpClient类

用于发送http请求,并接受请求的相应

(从4.5起开始可用)

using System.Net.Http;

 异步调用

            HttpClient httpClient = new HttpClient();
//获取或设置读取响应内容时要缓冲的最大字节数,要在发送请求前设置
httpClient.MaxResponseContentBufferSize = ;
//获取或设置请求超时前等待的时间跨度
httpClient.Timeout = TimeSpan.FromSeconds();
//以异步操作将 GET 请求发送给指定 URI,返回一个HttpResponseHeaders对象
HttpResponseMessage httpResponse = await httpClient.GetAsync("https://www.baidu.com/");
Console.WriteLine(httpResponse.Content.ReadAsStringAsync().Result);

添加请求头

            HttpClient httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Add("Accept","application/json;odata=verbose");

二、HttpResponseMessage 类

用于接收 http请求返回的数据和状态码

        static void Main(string[] args)
{
GetData();
Console.ReadKey();
}
private static async void GetData()
{
HttpClient httpClient = new HttpClient();
HttpResponseMessage httpResponse = null;
httpResponse = await httpClient.GetAsync("http://www.baidu.com/");
if (httpResponse.IsSuccessStatusCode)
{
//获取或设置 HTTP 响应的状态,
Console.WriteLine("HTTP 响应的状态代码: " + httpResponse.StatusCode);
//获取或设置通常由服务器发出的原因短语(与状态代码一起发出)
Console.WriteLine("服务器发出的原因短语: " + httpResponse.ReasonPhrase);
//获取 HTTP 响应标头的集合
Console.WriteLine("HTTP 响应标头信息:" + httpResponse.Headers);
//获取或设置 HTTP 响应消息的内容******
Console.WriteLine("HTTP 响应消息的内容: " + httpResponse.Content.ReadAsStringAsync().Result);
//获取或设置 HTTP 消息版本
Console.WriteLine("HTTP 消息版本: " + httpResponse.Version);
}
}
}

三、HttpRequestMessage类

表示一条 HTTP 请求消息

            HttpClient httpClient = new HttpClient();
HttpRequestMessage httpRequestMessage = new HttpRequestMessage();
//获取或设置用于 HTTP 请求的 Uri
httpRequestMessage.RequestUri= new Uri("https://www.baidu.com");
var task = httpClient.SendAsync(httpRequestMessage);
task.Result.EnsureSuccessStatusCode();
HttpResponseMessage response = task.Result;
Console.WriteLine(response.Content.ReadAsStringAsync().Result);

HttpRequestHeaders 类

请求标头

四、HttpContent 类

表示 HTTP 实体正文和内容标头的基类

五、HttpMessageHandler 类

HTTP 消息处理程序的基类

HttpClient 类可以把HttpMessageHandler作为其构造函数的参数来定制请求

六、把输出结果显示为html

七、代理WebProxy

            //代理服务器的ip和端口号
WebProxy proxy = new WebProxy("45.77.xxx.xxx", );
//用户名密码
proxy.Credentials = new NetworkCredential("root","mengmeng");
var handler = new HttpClientHandler { Proxy = proxy };
var client = new HttpClient(handler);
//要访问的目的网址
HttpResponseMessage response = await client.GetAsync("https://www.youtuxx.com/?hl=zh-CN");
Console.WriteLine(await response.Content.ReadAsStringAsync());

(43)C#网络1 http的更多相关文章

  1. Linux学习43 CCNA网络知识-计算机网络基础

    一.Linux网络配置属性 1.计算机网络 TCP/IP:协议簇,协议栈(使用的模型) ISO组织制定了OSI七层模型协议栈(学习的模型) 2.网卡 a.MAC:Media Access Contro ...

  2. 伪教练技术培训之殇-2013年9月江西IDC拓行榜与综述

    纠集几个人,然后培训所谓的教练技术培训. 培训的人一期又一期的参与,国学.佛学.超能量,无所不用其极,然后就是疯狂的拿人头,邀请朋友加盟. 有甚者还披上“科技”的外衣,用“水知道答案”这种早被公知指出 ...

  3. 笔记整理--socket_server

    epoll精髓 - 彭帅 - 博客园 - Google Chrome (2013/10/11 20:47:52) epoll精髓 在linux的网络编程中,很长的时间都在使用select来做事件触发. ...

  4. 最新Java技术

    最近在网上查资料碰到好多没接触过的技术,先汇总在这里备用,以后慢慢吸收 1. JNA JNI的替代品,调用方式比JNI更直接,不再需要JNI那层中间接口,几乎达到Java直接调用动态库 2. Smal ...

  5. liunx学习笔记

    告知-----------------------------------grub启动时滚动的代码屏默认我们执行命令使用的为bash,unix使用的为csh能够通过service 程序名进行start ...

  6. Linux常用基础操作命令大全(超实用精心整理)

    相信大家都对黑客那种只用命令行对电脑操作的风格惊呆了,其实你也可以做到.linux是一款不同于windows的操作系统,而且它是黑客.渗透人员.运维人员等等必会的.如果你想学习,小编下面整理的命令将会 ...

  7. 大数据学习路线之linux系统基础搭建

    学习大数据是必须掌握一定Linux知识的,工欲善其事,必先利其器.在学习之前,首先需要搭建Linux系统,本节将讲解VMware Workstation的安装和CentOS 7系统的安装. 1.2.1 ...

  8. 系统学习Docker 践行DevOps理念

    Docker代表的容器技术是近两年的大热技术,和人工智能.区块链等热点不同,容器技术的门槛并不高,每一个开发.测试.运维人员都能在日常工作中掌握和使用,是当今IT从业人员的必备技能之一.本课程会带大家 ...

  9. Echarts词云图

    今天使用Echarts写了个词云图,之前使用pycharts生成的html就是echarts.主要代码如下,另外Echarts需要到https://www.echartsjs.com/下载,开发时使用 ...

随机推荐

  1. 《3+1团队》第八次团队作业:Alpha冲刺

    项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 3+1团队 团队博客地址 https://home.cnblogs.com/u/3-1group ...

  2. 洛谷 P1126 机器人搬重物 (BFS)

    题目链接:https://www.luogu.org/problemnew/show/P1126 吐槽:这题很阴险 一开始没把格子图转化成点图:30分 转化成点图,发现样例过不去,原来每步要判断vis ...

  3. 用jquery操作xml文件

    一. xml文件\内容读取 1.读取xml文件 $.get( xmlfile.xml , function (xml){ //xml即为可以读取使用的内容,具体读取见第2点 }); 2.读取xml内容 ...

  4. tp5 -- 微信公众号支付

    近来期间比较忙, 忙完之后发现最近有挺多的东西没有整理,于是乎.就将以前用到的一些小东西整理了一下. 如果对您有帮助,则是我最大的幸运. 本篇主要是说了一下整合TP5的微信公众号支付. 不过由于最近T ...

  5. Bootstrap历练实例:带有下拉菜单的标签和胶囊导航

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  6. 企业版https

    http://www.cocoachina.com/bbs/read.php?tid=194213

  7. luogu P2574 XOR的艺术 (线段树)

    luogu P2574 XOR的艺术 (线段树) 算是比较简单的线段树. 当区间修改时.\(1 xor 1 = 0,0 xor 1 = 1\)所以就是区间元素个数减去以前的\(1\)的个数就是现在\( ...

  8. redis集群理解

    Redis在3.0中也引入了集群的概念,用于解决一些大数据量和高可用的问题,但是,为了达到高性能的目的,集群不是强一致性的,使用的是异步复制,在数据到主节点后,主节点返回成功,数据被异步地复制给从节点 ...

  9. jenkins学习笔记(一)

    windows下安装jenkins步骤 1.下载 官网路径:https://jenkins.io/ 2.安装 直接双击安装程序即可 centos7下安装命令: wget -O /etc/yum.rep ...

  10. break、continue、exit、return的区别和对比

    break.continue.exit.return的区别和对比 一:说明 break.continue在条件循环语句及循环语句(for.while.if等)中用于控制程序的走向:而exit则用于种植 ...