(43)C#网络1 http
一、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的更多相关文章
- Linux学习43 CCNA网络知识-计算机网络基础
一.Linux网络配置属性 1.计算机网络 TCP/IP:协议簇,协议栈(使用的模型) ISO组织制定了OSI七层模型协议栈(学习的模型) 2.网卡 a.MAC:Media Access Contro ...
- 伪教练技术培训之殇-2013年9月江西IDC拓行榜与综述
纠集几个人,然后培训所谓的教练技术培训. 培训的人一期又一期的参与,国学.佛学.超能量,无所不用其极,然后就是疯狂的拿人头,邀请朋友加盟. 有甚者还披上“科技”的外衣,用“水知道答案”这种早被公知指出 ...
- 笔记整理--socket_server
epoll精髓 - 彭帅 - 博客园 - Google Chrome (2013/10/11 20:47:52) epoll精髓 在linux的网络编程中,很长的时间都在使用select来做事件触发. ...
- 最新Java技术
最近在网上查资料碰到好多没接触过的技术,先汇总在这里备用,以后慢慢吸收 1. JNA JNI的替代品,调用方式比JNI更直接,不再需要JNI那层中间接口,几乎达到Java直接调用动态库 2. Smal ...
- liunx学习笔记
告知-----------------------------------grub启动时滚动的代码屏默认我们执行命令使用的为bash,unix使用的为csh能够通过service 程序名进行start ...
- Linux常用基础操作命令大全(超实用精心整理)
相信大家都对黑客那种只用命令行对电脑操作的风格惊呆了,其实你也可以做到.linux是一款不同于windows的操作系统,而且它是黑客.渗透人员.运维人员等等必会的.如果你想学习,小编下面整理的命令将会 ...
- 大数据学习路线之linux系统基础搭建
学习大数据是必须掌握一定Linux知识的,工欲善其事,必先利其器.在学习之前,首先需要搭建Linux系统,本节将讲解VMware Workstation的安装和CentOS 7系统的安装. 1.2.1 ...
- 系统学习Docker 践行DevOps理念
Docker代表的容器技术是近两年的大热技术,和人工智能.区块链等热点不同,容器技术的门槛并不高,每一个开发.测试.运维人员都能在日常工作中掌握和使用,是当今IT从业人员的必备技能之一.本课程会带大家 ...
- Echarts词云图
今天使用Echarts写了个词云图,之前使用pycharts生成的html就是echarts.主要代码如下,另外Echarts需要到https://www.echartsjs.com/下载,开发时使用 ...
随机推荐
- 《3+1团队》第八次团队作业:Alpha冲刺
项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 3+1团队 团队博客地址 https://home.cnblogs.com/u/3-1group ...
- 洛谷 P1126 机器人搬重物 (BFS)
题目链接:https://www.luogu.org/problemnew/show/P1126 吐槽:这题很阴险 一开始没把格子图转化成点图:30分 转化成点图,发现样例过不去,原来每步要判断vis ...
- 用jquery操作xml文件
一. xml文件\内容读取 1.读取xml文件 $.get( xmlfile.xml , function (xml){ //xml即为可以读取使用的内容,具体读取见第2点 }); 2.读取xml内容 ...
- tp5 -- 微信公众号支付
近来期间比较忙, 忙完之后发现最近有挺多的东西没有整理,于是乎.就将以前用到的一些小东西整理了一下. 如果对您有帮助,则是我最大的幸运. 本篇主要是说了一下整合TP5的微信公众号支付. 不过由于最近T ...
- Bootstrap历练实例:带有下拉菜单的标签和胶囊导航
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- 企业版https
http://www.cocoachina.com/bbs/read.php?tid=194213
- luogu P2574 XOR的艺术 (线段树)
luogu P2574 XOR的艺术 (线段树) 算是比较简单的线段树. 当区间修改时.\(1 xor 1 = 0,0 xor 1 = 1\)所以就是区间元素个数减去以前的\(1\)的个数就是现在\( ...
- redis集群理解
Redis在3.0中也引入了集群的概念,用于解决一些大数据量和高可用的问题,但是,为了达到高性能的目的,集群不是强一致性的,使用的是异步复制,在数据到主节点后,主节点返回成功,数据被异步地复制给从节点 ...
- jenkins学习笔记(一)
windows下安装jenkins步骤 1.下载 官网路径:https://jenkins.io/ 2.安装 直接双击安装程序即可 centos7下安装命令: wget -O /etc/yum.rep ...
- break、continue、exit、return的区别和对比
break.continue.exit.return的区别和对比 一:说明 break.continue在条件循环语句及循环语句(for.while.if等)中用于控制程序的走向:而exit则用于种植 ...