Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据.

HTTP同步请求

        // get请求是查询字符串直接跟在URL后面
        
//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);

HTTP异步请求

        //发送请求,”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);

        }

    }

版权声明:本文为pursuedream原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/pursuedream/articles/641361.html