(1)Lambda表达式

Lambda表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式树类型。

所有 Lambda 表达式都使用 Lambda 运算符 =>,该运算符读为“goes to”。 该 Lambda 运算符的左边是输入参数(如果有),右边包含表达式或语句块。 Lambda 表达式 x => x * x 读作“x goes to x times x”。可以将此表达式分配给委托类型,如下所示:

delegate int del(int i); static void Main(string[] args) {     del myDelegate = x => x * x;     int j = myDelegate(5); //j = 25 } 

创建表达式树类型:

using System.Linq.Expressions;  namespace ConsoleApplication1 {     class Program     {         static void Main(string[] args)         {             Expression<del> myET = x => x * x;         }     } } 

=> 运算符具有与赋值运算符 (=) 相同的优先级,并且是右结合运算符。

(2)System.Net.WebClient 类

提供向 URI 标识的资源发送数据和从 URI 标识的资源接收数据的公共方法。

WebClient 类提供向 URI(支持以 http:、https:、ftp:、和 file: 方案标识符开头的 URI) 标识的任何本地、Intranet 或 Internet 资源发送数据以及从这些资源接收数据的公共方法。

WebClient 类使用 WebRequest 类提供对资源的访问。WebClient 实例可以通过任何已向 WebRequest.RegisterPrefix 方法注册的 WebRequest 子代访问数据。

(3)System.Net.HttpWebRequest

提供 WebRequest 类的 HTTP 特定的实现。

HttpWebRequest 对 HTTP 协议进行了完整的封装,程序使用 HTTP 协议和服务器交互主要是进行数据的提交,通常数据的提交是通过 GET 和 POST 两种方式来完成。

HttpWebRequest 常用命令如下:

  HttpWebRequest - 对指定的 URI 发出请求
  Create() - 初始化一个 WebRequest
  BeginGetResponse() - 开始对指定 URI 资源做异步请求
  EndGetResponse() - 结束对指定 URI 资源做异步请求
  HttpWebResponse - 对指定的 URI 做出响应
  GetResponseStream() - 获取响应的数据流   需要注意的是: HttpWebRequest使用基于代理的异步编程模型,在HTTP响应返回时引发的HttpWebRequest回调不是在UI线程上返回的,因此在该回调中需要额外代码处理UI,否则就会产生"跨线程访问无效"错误。

(4)回调方法的签名和工作机制
      1.回调方法必须要符合以下签名:
<修饰符>void <方法名>(IAsynResult asynResult);回调的方法的名称的统一规范是在名称前面加On ,如:OnAsynCallBack();(注:命名事件和委托等类型时候同样有类似的惯例),
   2.工作机制:
.Net使用从线程池中得到的线程来执行通过BeginInvoke()分配的方法,当异步方法执行完成时,工作线程调用回调方法而不只直接回到线程池中,要实现回调方法,我们必须在使用beginInvoke()方法的时候指定一个参数为IAsyncResult类型的方法,因为在 AsyncResult是一个.Net中已经定义好的委托,我们要使用回调方法的话,就必须符合他的要求:他的定义如下,public delegate void AsyncCallBack(IAsyncResult asyncResult);
(5)实例
                // Create a HttpWebrequest object to the desired URL.
                HttpWebRequest myHttpWebRequest1= (HttpWebRequest)WebRequest.Create(uri);
                // Create an instance of the RequestState and assign the previous myHttpWebRequest1
                // object to it's request field.  
                RequestState myRequestState = new RequestState();  //压根找不到这个类
                myRequestState.request = myHttpWebRequest1;
                // Start the asynchronous request.
                IAsyncResult result=
                  (IAsyncResult) myHttpWebRequest1.BeginGetResponse(new AsyncCallback(RespCallback),myRequestState);
                // Release the HttpWebResponse resource.
                myRequestState.response.Close();
              }
(6)WebClient
private void DoWebClient()
{
WebClient webClient = new WebClient();
//在不阻止调用线程的情况下,从资源返回数据 
webClient.OpenReadAsync(new Uri("http://www.cnblogs.com/linzheng"));
//异步操作完成时发生 
webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted);
}
void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
using (StreamReader reader = new StreamReader(e.Result))
{
string contents = reader.ReadToEnd();
。。。。。。
(7)HttpWebRequest
private void DoHttpWebRequest()
{
string url = "http://www.cnblogs.com/linzheng";
WebRequest request = HttpWebRequest.Create(url);//创建WebRequest类
IAsyncResult result = (IAsyncResult)request.BeginGetResponse(ResponseCallback, request);//返回异步操作的状态
}
private void ResponseCallback(IAsyncResult result)
{
HttpWebRequest request = (HttpWebRequest)result.AsyncState;//获取异步操作返回的的信息
WebResponse response = request.EndGetResponse(result);//结束对 Internet 资源的异步请求

using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string contents = reader.ReadToEnd();

......
Dispatcher.BeginInvoke(() => 
httpWebRequestTextBlock.Text = contents.ToString().Substring(begin + 7, end - begin - 7); 
textBox2.Text = note; 
});
}

 完美世界 http://www.23cat.com/Contents_51864.html 
  戮仙 http://www.23cat.com/Book_51960.html  

网络编程之webclient和httpwebrequest的使用的更多相关文章

  1. C#网络编程之WebClient

    1.什么是WebClient? 源自MSDN:提供用于将数据发送到由 URI 标识的资源及从这样的资源接收数据的常用方法. 2.OpenRead()  为从具有String指定的URI的资源下载的数据 ...

  2. [深入浅出WP8.1(Runtime)]网络编程之HttpClient类

    12.2 网络编程之HttpClient类 除了可以使用HttpWebRequest类来实现HTTP网络请求之外,我们还可以使用HttpClient类来实现.对于基本的请求操作,HttpClient类 ...

  3. 网络编程之HttpClient类(转)

    12.2 网络编程之HttpClient类 除了可以使用HttpWebRequest类来实现HTTP网络请求之外,我们还可以使用HttpClient类来实现.对于基本的请求操作,HttpClient类 ...

  4. 网络编程之socket

    网络编程之socket socket:在网络编程中的一个基本组件,也称套接字. 一个套接字就是socket模块中的socket类的一个实例. 套接字包括两个: 服务器套接字和客户机套接字 套接字的实例 ...

  5. java网络编程之TCP通讯

    java中的网络编程之TCP协议的详细介绍,以及如何使用,同时我在下面举2例说明如何搭配IO流进行操作, /* *TCP *建立连接,形成传输数据的通道: *在连接中进行大数据量传输: *通过三次握手 ...

  6. python3网络编程之socketserver

    本节主要是讲解python3网络编程之socketserver,在上一节中我们讲到了socket.由于socket无法支持多用户和多并发,于是就有了socket server. socket serv ...

  7. 网络编程之UDP编程

    网络编程之UDP编程 UDP协议是一种不可靠的网络协议,它在通信的2端各建立一个Socket,但是这个Socket之间并没有虚拟链路,这2个Socket只是发送和接受数据的对象,Java提供了Data ...

  8. 网络编程之TCP编程

    网络编程之TCP编程 前面已经介绍过关于TCP协议的东西,这里不做赘述.Java对于基于TCP协议的网络通信提供了良好的封装,Java使用socket对象来代表两端的通信窗口,并通过Socket产生I ...

  9. 网络编程之socketserver

    网络编程之socketserver """ socketserver.py 中的5个基础类 +------------+ | BaseServer | +-------- ...

随机推荐

  1. 003.FTP客户端连接

    一 命令行连接 注意: 1:命令行连接不支持目录下载,使用mget也只会将目录下文件下载,不会下载目录本身. 2:命令行连接不支持断点续传. ftp [服务端IP] -help #获取帮助 - -mg ...

  2. 【HDU 3590】 PP and QQ (博弈-Anti-SG游戏,SJ定理,树上删边游戏)

    PP and QQ Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  3. 【BZOJ 4569】 4569: [Scoi2016]萌萌哒 (倍增+并查集)

    4569: [Scoi2016]萌萌哒 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 865  Solved: 414 Description 一个长 ...

  4. faker php测试数据库生成2

    因内容太长,被csdn截断了,只好把另外的内容写到这里. //Biased // 在10到20之间得到一个随机数字,有更大的几率接近20 echo $faker->biasedNumberBet ...

  5. Ural 2040. Palindromes and Super Abilities 2 回文自动机

    2040. Palindromes and Super Abilities 2 题目连接: http://acm.timus.ru/problem.aspx?space=1&num=2040 ...

  6. 注册Goole 账户 成功注册

    注册谷歌邮箱等Google帐号时提示:此电话号码无法用于进行验证怎么办? 相信很多网友在注册Google帐号的时候需要手机号码验证,比如在遇到过注册Google Gmail到最后一步“验证您的帐号” ...

  7. vue项目开发之v-for列表渲染的坑

    不知道大家在用vue开发的过程中有没有遇到过在使用v-for的时候会出现大片的黄色警告,比如下图: 其实这是因为没有写key的原因 :key是为vue的响应式渲染提供方法,在列表中单条数据改变的情况下 ...

  8. CentOS 7开机不执行/etc/rc.local的解决方法

    该死的CentOS 7居然开机不执行/etc/rc.local!!!!! 解决: chmod +x /etc/rc.d/rc.local 问题分析: 其实在/etc/rc.lacal文件上已经说明了, ...

  9. windows和linux 下将tomcat注册为服务

    参考文献: tomcat注册成windows服务 背景 当前项目需要运行两个Tomcat,每次启动系统以后都要手动进入到tomcat目录执行startup.bat,非常烦,所以想将这两个tomcat直 ...

  10. 【Go命令教程】8. go test

    go test 命令用于对 Go 语言编写的程序进行测试.这种测试是以 代码包 为单位的.当然,这还需要测试源码文件的帮助.关于怎样编写并写好 Go 程序测试代码,我们会在本章的第二节加以详述.在这里 ...