本篇博客对应视频讲解

回顾

上一篇讲了Linq的使用,大家自己上手实践之后,相信一定会感到非常快捷方便。更多详细的内容还是需要自己去阅读官方文档。
今天要讲网络请求中的http请求,这也是在编程当中经常使用到的内容之一。

Http请求

关于Http是什么,请求类型这些内容我在此都不说了,需要大家自己阅读相关资料。通常来讲,我们在进行数据采集,API调用,模拟登录等功能开发的时候,免不了使用http请求。
即使用浏览器能做到的事情,我们都可以通过编程去实现。毕竟浏览器本身也是一种应用程序,也是编程的产出结果。
关于.Net 平台提供的网络编程相关内容,大家可以阅读官方文档

常用的类

进行网络请求,对于一般的需求,我们使用HttpClientWebClient类即可。WebClient进行了更高级的封装,更容易使用,同时也意味着更少的自定义,更低的灵活性。
通常我们进行网络请求要进行相关的步骤:

  1. 分析目标源,比如编码格式,返回内容,是否需要鉴权,访问限制等。
  2. 发送请求获取返回数据。
  3. 处理返回的数据。

我们通过实际的例子来说明:

  1. 将百度首页保存成baidu.html
            // webclient 的简单使用
using (var wc = new WebClient())
{
// 设置编码
wc.Encoding = Encoding.UTF8;
// 请求内容
var result = wc.DownloadString("https://www.baidu.com");
// 保存到文件
File.WriteAllText("baidu.html", result);
}
  1. 使用httpClient进行多种方式请求
    首先要知道请求可以有多种方式,可以传递参数、文件等内容。不同的类型要构造不同的请求内容的结构体。
    C#提供了多种类型(继承HttpConent类)作为请求内容的容器。
// httpClient 请求
using (var hc = new HttpClient())
{
string result = "";
var httpResponse = new HttpResponseMessage(); // get请求
httpResponse = hc.GetAsync("https://www.baidu.com").Result;
result = httpResponse.Content.ReadAsStringAsync().Result;
Console.WriteLine(result); // post请求,构造不同类型的请求内容
var data = new List<KeyValuePair<string, string>> {
new KeyValuePair<string, string>("from","msdev.cc"),
};
// 封闭成请求结构体
var content = new FormUrlEncodedContent(data);
// 进行请求,获取返回数据
httpResponse = hc.PostAsync("https://msdev.cc", content).Result;
// 将返回数据作为字符串
result = httpResponse.Content.ReadAsStringAsync().Result; File.WriteAllText("post.html", result);
} // 自定义请求及结果处理
using (var hc = new HttpClient())
{
string result = "";
var httpRequest = new HttpRequestMessage();
var httpResponse = new HttpResponseMessage();
// 请求方法
httpRequest.Method = HttpMethod.Put;
// 请求地址
httpRequest.RequestUri = new Uri("https://msdev.cc");
// 请求内容
httpRequest.Content = new StringContent("request content");
// 设置请求头内容
httpRequest.Headers.TryAddWithoutValidation("", "");
// 设置超时
hc.Timeout = TimeSpan.FromSeconds(5);
// 获取请求结果
httpResponse = hc.SendAsync(httpRequest).Result;
// 判断请求结果
if (httpResponse.StatusCode == HttpStatusCode.OK)
{
result = httpResponse.Content.ReadAsStringAsync().Result;
File.WriteAllText("custom.html", result);
}
else
{
Console.WriteLine(httpResponse.StatusCode + httpResponse.RequestMessage.ToString());
}
}

8-网络请求之http的更多相关文章

  1. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  2. Android之三种网络请求解析数据(最佳案例)

    AsyncTask解析数据 AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个类,然后调用execute()方法. ...

  3. IOS开发之—— 在AFN基础上进行的网络请求的封装

    网络请求的思路:如果请求成功的话AFN的responseObject就是解析好的. 1发送网络请求:get/post/或者别的 带上URL,需要传的参数 2判断后台网络状态码有没有请求成功: 3 请求 ...

  4. Android,适合Restful网络请求封装

    借助volley.Gson类库. 优点 网络请求集中处理,返回值直接为预期的对象,不需要手动反序列,提高效率,使用时建立好model类即可. 使用效果 DataProess.Request(true, ...

  5. Android okHttp网络请求之Json解析

    前言: 前面两篇文章介绍了基于okHttp的post.get请求,以及文件的上传下载,今天主要介绍一下如何和Json解析一起使用?如何才能提高开发效率? okHttp相关文章地址: Android o ...

  6. 阶段一:通过网络请求,获得并解析JSON数据(天气应用)

    “阶段一”是指我第一次系统地学习Android开发.这主要是对我的学习过程作个记录. 在上一篇阶段一:解析JSON中提到,最近在写一个很简单的天气预报应用.即使功能很简单,但我还是想把它做成一个相对完 ...

  7. NSURLSession网络请求

    个人感觉在网上很难找到很简单的网络请求.或许是我才疏学浅 ,  所有就有了下面这一段 , 虽然都是代码 , 但是全有注释 . //1/获取文件访问路径 NSString *path=@"ht ...

  8. 【Swift】Alamofile网络请求数据更新TableView的坑

    写这篇BLOG前,有些话不得不提一下,就仅当发发恼骚吧... 今天下午为了一个Alamofire取得数据而更新TableView的问题,查了一下午的百度(360也是见鬼的一样),竟然没有一个简单明了的 ...

  9. 【WP8.1】HttpClient网络请求、进度以及终止

    工作这么长时间,起初还是喜欢用面向程序过程的思路去写代码. 慢慢的才会用面向对象的思路分析.解决问题.也算是一点点进步吧. 最近在做一个下载音乐的功能.用到了HttpClient类. 于是就简单的写了 ...

  10. ios htttp网络请求cookie的读取与写入(NSHTTPCookieStorage)

    当你访问一个网站时,NSURLRequest都会帮你主动记录下来你访问的站点设置的Cookie,如果 Cookie 存在的话,会把这些信息放在 NSHTTPCookieStorage 容器中共享,当你 ...

随机推荐

  1. Android bitmap转byte

    逆转start协议输出 private static byte[] bitmap2byte(Bitmap bmp) throws Exception{ return bitmap2byte(bmp, ...

  2. MaskBlt 拷贝非矩形区域图象

    MaskBlt  该函数使用特定的掩码和光栅操作来对源和目标位图的颜色数据进行组合. 原型: BOOL MaskBlt( HDC  hdcDest, int  nXDest,  int  nYDest ...

  3. IT项目经理岗位职责(转)

    一.  项目经理岗位职责 1.  项目经理为整个项目的第一责任人. 2.  项目经理对<质量检查报告>中的所有细则负首要责任. 3.  项目经理必须有效掌控项目开发的各个环节,协助.指导项 ...

  4. 03-使用html静态页面展示执行效果

    使用工作流框架可以做什么事情?写代码呗,没那么简单.

  5. sql server 设置用户名和密码

    安全性:security 登录名:Logins 可以双击直接对里面现有的用户权限进行修改 也可以右击新建新用户 并对新用户权限进行设置

  6. 获取地址栏的URL: PHP JS

    1. PHP 获取上一页的URL 在php中可以通过内置的变量的属性来获取上一页的URL: $_SERVER['HTTP_REFERER']. 但是在IE中如果跳转是通过js函数如: window.l ...

  7. CMD一般命令

    返回根目录:cd\ 回车 进入D盘:输入cd\ 回车,返回根目录,再输入d:回车,即可进入d盘(注意:字符都是英文字符) 进入D盘叫JDK的文件夹:如上面进入d盘后,输入:cd jdk 回车即可 进入 ...

  8. equals()方法左右变量的位置

    题:一个变量,一个常量,用equals()方法比较,让咱们,看看到底是常量放前面好啊,还是变量放前面好 ------------------------------------------------ ...

  9. linux / centos 安装SQL Server 2017 设置默认语言与排序规则Chinese_PRC_CI_AS

    安装 安装很简单参照官方教程 https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-red-hat?view=sq ...

  10. 测试用Word2007发布博客文章

    目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...