(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/下载,开发时使用 ...
随机推荐
- 多线程下载命令--axel
axel是轻量级多线程下载工具,对比传统下载工具curl和wget,下载速度上提升不少 centos安装如下 yum install -y axel 命令行用法 axel [option] url1 ...
- shell脚本,批量创建10个系统帐号并设置密码为随机8位字符串。
[root@localhost wyb]# cat user10.sh #!/bin/bash #批量创建10个系统帐号wangyb01-wangyb10并设置密码(密码为随机8位字符串). > ...
- iOS dateformatter设置GMT格式时间--iOS开发系列---项目中成长的知识四
今天在项目中开始接手客户端的签名这个模块,签名这个会在项目结束过后再单独写一下自己的心得! 今天讲讲在签名的过程中我们需要向服务器传送一个Date值,格式要求是格林威治时间,也就是GMT时间! 格式要 ...
- UIViewAnimationOptions
常规动画属性设置(可以同时选择多个进行设置) UIViewAnimationOptionLayoutSubviews:执行UIView动画时,自动更新Subview的Layout约束.. UIView ...
- 通过工厂模式批量创建对象后调用其中方法 出现XXXis not a function()问题原因
//通过工厂模式批量创建 function Computer(color,weight,logo){ var obj=new Object(); obj.color=c ...
- CSS3-文本-text-shadow
一.text-shadow 语法: text-shadow : none | <length> none | [<shadow>, ] * <shadow> 或no ...
- PyCharm(一)——PyCharm设置SSH远程调试
一.环境 系统环境:windows10 64位 软件:PyCharm2017.3 本地Python环境:Python2.7 二.配置 2.1配置远程调试 第一步:运行PyCharm,然后点击设置如下图 ...
- Windows环境下python3.7版本怎么安装pygame
访问此网址 下载对应Python版本的pygame,如下图: 下载完成后,会有一个whl后缀的文件. 将此文件复制到Python根目录下的scripts目录下,打开cmd, 切换到scripts目录下 ...
- Spring核心技术(十一)——基于Java的容器配置(一)
基本概念: @Bean和@Configuration Spring中新的基于Java的配置的核心就是支持@Configuration注解的类以及@Bean注解的方法. @Bean注解用来表示一个方法会 ...
- 关于awk中NR、FNR、NF、$NF、FS、OFS的说明
一.NR和FNR 1.释义 NR: 表示当前读取的行数 FNR:当前修改了多少行 2.举例 比如现在AWK处理到第五行.第一行没有进行操作,2,3,4,5行进行了操作,那么NR=5,FNR=4 NR= ...