首先说一下 这个教程面向的是具有一定C#基础知识的初学者

我相信很多人会用C#的人都是能够编一些小的算法程序 始终没有接触到网络应用
也就与贴吧辅助无缘了
说老实话 我在过去几年就是这样 接触C#有两年了 然后学vb差不多10年了吧。。。始终没有途径了解这些东西
但是C#就是这样一种简单的 高度封装的语言 用它来写网络应用 不需要了解什么tcp/ip协议
访问网页不过是一个过程 在C#中抽象为一个对象一个函数罢了

首先在程序开头加上这么一句:

using System.Net;

这是在引入名字空间 让你少打重复的字 不解释了

说之前先扯一些关于webclient
webclient的确能访问网页 但是不能设置超时和代理 导致访问一些页面就很卡= =

在这里就简单做个例子吧,比如访问百度首页:
基本的http知识也不叙述了 翻我之前那篇教程去= =
顺带提一下 抓包还是推荐用经典的httpwatch和wireshark 两者都是两个按钮开始和停止 可以抓点开始和停止中间的包

Webclient wc = new Webclient();
//这五个是非常常见的标头 虽然说访问百度首页不需要那么苛刻 还是加上为好
wc.Headers.Set(HttpRequestHeader.Accept, "*/*");
wc.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-cn");
wc.Headers.Set(HttpRequestHeader.UserAgent, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)");
wc.Headers.Set(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded");
wc.Headers.Set("Cache-Control", "no-cache");
string str = wc.DownloadString("http://www.baidu.com");

是的就这么几句就搞定了 要注意如果是post操作的话要用Uploadxxx函数 传两个参数为url和提交数据
如果要返回二进制数据而不是字符串的话 要用到xxxData函数 用Byte()类型的变量接收即可
还有程序初始化的时候不要忘了加上

ServicePoint.Expect100Continue = false;

接下来是另一种方法 httpwebrequest 和 httpwebresponse
webclient说白了就是对上面那俩做了一个封装
还是访问百度首页:

1.写出了这句你就成功了一半

HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://www.baidu.com");

2.还是标头 和一些杂项

req.Accept = "*/*"
req.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-cn")
req.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"
req.KeepAlive = True
req.Headers.Set("cache-control", "no-cache")
req.ContentType = "application/x-www-form-urlencoded"
req.ServicePoint.Expect100Continue = False
req.Timeout = 8000;
req.ReadWriteTimeout = 8000;
req.Method = "GET";//这个就必须自己写了 该是什么就写什么
req.Proxy = new WebProxy(...);//还是有就写 没有就不写

3.如果是 post 还要提交数据对吧 假设数据变量的名字是postdata 这样写

Stream st = req.GetRequestStream();
st.Write(postdata, 0, postdata.Length);
st.Close();//不要忘了关 不关就卡在那儿了

4.

HttpWebResponse res = (HttpWebResponse)req.GetResponse();
st = res.GetResponseStream();

5.这时候你有两种选择 一种是取得文本

StreamReader sr = new StreamReader(st);
string retstr = sr.ReadToEnd();
sr.Close();
st.Close();
res.Close();

retstr即是页面的文本
当然 如果你没有中间保存st的引用的话可以不用自己管他的关闭 你可以理解为C#具有强大的回收机制

还有一种是要二进制数据的:

//如果直接访问Length属性会报错
MemoryStream ms = new MemoryStream();
byte[] buff = new byte[2048];
int count;
do
{count = st.Read(buff, 0, 2048);ms.Write(buff, 0, count);
} while (count != 0);
st.Close();
res.Close();
byte[] retdata = ms.ToArray();
ms.Close();

retdata就是页面文本以二进制保存的形式 可以用encoding.getstring函数转过去

于是就大功告成了。。不过还有几件事情要做

(1)异常处理
C#访问网页失败时候都会报异常 而如果你不处理的话 就崩的跟狗似的了= =
try..catch可以插在任何地方 单条语句 for内部 或者整个函数体 总之控制流程还是很方便的

(2)程序初始化的时候

ServicePointManager.Expect100Continue = false;
ServicePointManager.MaxServicePoints = 512;//这个貌似是最大值了

要不然多线程会卡

好了就这样。。。。

【教程】贺岁教程之--C# getpost实例相关推荐

  1. Xamarin Essentials教程实现数据的传输功能实例

    Xamarin Essentials教程实现数据的传输功能实例 [示例1-1]以下将实现数据的传输功能.代码如下: public async Task ShareUri(string text, st ...

  2. 区块链教程(五):合约编写实战实例

    注:本教程为技术教程,不谈论且不涉及炒作任何数字货币 区块连教程(一):前置知识-linux补充 区块链教程(二):基础概念介绍 区块链教程(三):Solidity编程基础 区块链教程(四):搭建私链 ...

  3. CAD教程:CAD布尔运算命令应用实例

    在上一节CAD教程中小编给大家介绍了国产CAD制图软件中CAD布尔运算命令的使用技巧,为了让大家更深入的了解此命令的使用,接下来小编将以国产CAD制图软件--浩辰CAD建筑软件为例继续来给大家分享CA ...

  4. ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单编程

    ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单编程 原文:ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单 ...

  5. Python GUI教程 | Lynda教程 中文字幕

    Python GUI教程 | Lynda教程 中文字幕 Learning Python GUI Programming 课程ID: 604235 时长: 6.1小时 所属类别:Python 了解如何使 ...

  6. Vue.js 教程---菜鸟教程

    文章目录 教程 安装 起步 模板语法 插值 指令 用户输入 过滤器 缩写 条件语句 循环语句 计算属性 监听属性 样式绑定 事件处理器 表单 组件 组件 - 自定义事件 自定义指令 钩子 路由( vu ...

  7. Python基础教程-菜鸟教程学习笔记1

    Python基础教程-菜鸟教程学习笔记1 文章目录 Python基础教程-菜鸟教程学习笔记1 前言 Python 简介 1. 第一个Python程序 2. Python 中文编码 3. 基本语法 1) ...

  8. MarkDown的使用教程综合教程

    MarkDown的使用教程综合教程 1.前言 本章节汇总了MarkDown的综合使用,来完成一篇具有格式的论文. 论文以<XX 管理系统设计与实现>作为题目,包含毕业论文所需的主要对象,如 ...

  9. 零基础SSM入门教程(0)--教程背景与目录

    点此查看 零基础JavaWeb全栈文章目录及源码下载 1. 背景 本教程的出发点是写一个比较条理,比较全面的SSM系列教程,首先造福自己.理顺自己的知识体系,然后也造福大众,因为网上现存的资源相对比较 ...

  10. php教程数据库操作,php mysql数据库操作教程_PHP教程

    php mysql数据库操作教程 本教程讲了三个实例都是关于php操作mysql数据库的教程,一是连接mysql数据库,二是查询数据库字段名字,三是查询数据库记录. php教程 mysql教程数据库教 ...

最新文章

  1. 请写出查询该表中成绩最大值的sql语句_SQL-汇总分析
  2. dotnet 通过引用 msbuild 程序集实现自己定制编译器
  3. idea提示不区分大小写,解决方法
  4. jfinal 一对一 实体类怎么写_新祥旭考研一对一:考前必知的四大答题技巧
  5. 使用不同的膨胀和腐蚀方法对图像进行处理
  6. php虚拟机java虚拟机,Java虚拟机的具体详解
  7. Illustrator 教程,如何在 Illustrator 中添加图像?
  8. 联想笔记本怎么开启无线网络?
  9. IntelliJ IDEA常用快捷键
  10. 简洁开源的一款导航网站源码
  11. 记录一下通过QQ发送apk安装失败原因。
  12. 你那么年轻却窥觑整个世界,你那么浮躁却想要看透生活
  13. pandas(四)pandas的拼接操作
  14. C# 程序集(Assembly)
  15. 青春是一场不失不忘的期许
  16. android studio 遇到 app error launching怎么办?
  17. 关于iOS的通讯录开发权限的说明笔记
  18. sharding异常之no table route info
  19. word 如何设置页码?分页?分节?
  20. python导入库的简便方法

热门文章

  1. android ble 调试工具,分享一个蓝牙BLE调试小程序LightBlue
  2. bootstrap 页面分成三列_20分钟成功编写bootstrap响应式页面 就这么简单
  3. python 添加图片_python3 tkinter添加图片和文本
  4. python主函数入口_python类 + mian()函数
  5. 【Python】变量那些事
  6. STC51-A/D和D/A
  7. pageable设置size_总结SpringBoot使用Pageable实现分页源码
  8. linux7.3ssh登陆不上,centos7.3升级openssh到7.7p1后root用户无法登陆的问题
  9. 《深入理解 Spring Cloud 与微服务构建》第十一章 服务网关
  10. 不同分支设置不同的远程仓库