1.Get请求
新建一个webform项目,添加一个按钮,定义click事件
protected void Button1_Click(object sender, EventArgs e) { string url = "https://www.baidu.com/"; var request = HttpWebRequest.Create(url); request.Method = "GET"; request.BeginGetResponse(ResponseCallBack,request);//发起异步响应式请求,提供一个回调函数和实例本身 } private void ResponseCallBack(IAsyncResult result)//回调函数 { HttpWebRequest httpWebRequest = (HttpWebRequest)result.AsyncState;//获取请求数据 WebResponse webResponse = httpWebRequest.EndGetResponse(result);//结束异步的响应 using (Stream stream = webResponse.GetResponseStream()) { using (StreamReader reader = new StreamReader(stream)) { string content = reader.ReadToEnd();//这里就是百度对应的页面Html代码 } } }
2.Post请求
比起Get请求,多了3、4、5三步,
protected void Button2_Click(object sender, EventArgs e) { string url = "https://www.cnblogs.com/"; var request = HttpWebRequest.Create(url); request.Method = "POST"; request.BeginGetRequestStream(RequestStreamCallBack,request);//发起获取数据流请求 } private void RequestStreamCallBack(IAsyncResult result)//比Get多了个载入参数的环节 { HttpWebRequest httpWebRequest=(HttpWebRequest)result.AsyncState;//获取请求流数据 Stream stream = httpWebRequest.EndGetRequestStream(result);//结束异步的数据流请求 string param = "postdata"; //定义Post参数 byte[] data = Encoding.UTF8.GetBytes(param);//把参数转化为字节 stream.Write(data, 0, data.Length);//写入数据 stream.Close(); httpWebRequest.BeginGetResponse(ResponseCallBack, httpWebRequest); } private void ResponseCallBack(IAsyncResult result)//回调函数,和GET一样 { HttpWebRequest httpWebRequest = (HttpWebRequest)result.AsyncState; WebResponse webResponse = httpWebRequest.EndGetResponse(result); using (Stream stream = webResponse.GetResponseStream()) { using (StreamReader reader = new StreamReader(stream)) { string content = reader.ReadToEnd(); } } }