Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据. HTTP同步请求 // get请求是查询字符串直接跟在URL后面
HTTP异步请求//post是把消息体包含查询字符串,满足把大量数据传递给服务器 //发送请求,"url"为访问的地址 HttpWebRequest req = (HttpWebRequest)WebRequest.Create("url"); //ContentType为数据类型 //get请求ContentType为空,post请求ContentType为application/x-www-form-urlencoded req.ContentType = ""; req.Method = "get"; //请求方法为get和post //content消息体,get请求content为空,post请求为要传递的参数,如“AcctID=1 string content = ""; req.ContentLength=content.Length; Stream s; s = req.GetRequestStream();//获取请求数据 StreamWriter sw = new StreamWriter(s, System.Text.Encoding.ASCII); sw.Write(content); sw.Close(); //得到HTTP请求 HttpWebResponse res = (HttpWebResponse)req.GetResponse(); s = res.GetResponseStream(); StreamReader sr = new StreamReader(s, System.Text.Encoding.ASCII); System.Text.StringBuilder sb = new System.Text.StringBuilder(); char[] data = new char[1024]; int nBytes; do { nBytes = sr.Read(data, 0, (int)1024); sb.Append(data); } while (nBytes == 1024); //发送请求,"url"为访问的地址
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("url"); //ContentType为数据类型 //get请求ContentType为空,post请求ContentType为application/x-www-form-urlencoded req.ContentType = ""; req.Method = "get"; //请求方法为get和post //content消息体,get请求content为空,post请求为要传递的参数,如“AcctID=1 string content = ""; req.ContentLength=content.Length; Stream s; s = req.GetRequestStream();//获取请求数据 StreamWriter sw = new StreamWriter(s, System.Text.Encoding.ASCII); sw.Write(content); sw.Close(); Handler h = new Handler();
回调函数,用类来表示AsyncCallback callback = new AsyncCallback(h.Callback); //方法 //将请求对象作为状态对象传递 req.BeginGetResponse(callback, req); public class Handler
{ public void Callback(IAsyncResult ar) { //将Requeststate对象强制转化为webRequest对象 HttpWebRequest req = (HttpWebRequest)ar.AsyncState; //得到与这个请求相关的响应对象 HttpWebResponse res = (HttpWebResponse)req.EndGetResponse(ar); //开始从响应流中读取数据 Stream s = res.GetResponseStream(); StreamReader sr = new StreamReader(s, System.Text.Encoding.ASCII); System.Text.StringBuilder sb = new System.Text.StringBuilder(); char[] data = new char[1024]; int nBytes; do { nBytes = sr.Read(data, 0, (int)1024); sb.Append(data); } while (nBytes == 1024); } } |
|