Http请求之--C#的HttpWebRequest实现POST方式请求

1、添加头信息和请求方法。有两种方式添加
            req = (HttpWebRequest)WebRequest.Create("http://zhidao.baidu.com/submit/ajax/");
            req.Method = "POST";//请求方式是POST
            req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            req.Headers.Add("Accept-Encoding", "gzip, deflate");
            req.Headers.Add("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
            req.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/25.0";
            req.Headers.Add("Cache-Control", "no-cache");
            req.Headers.Add("Pragma", "no-cache");
            req.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
            req.Referer = textBox1.Text.Trim();
            req.Headers.Add("X-Requested-With", "XMLHttpRequest");//这是AJAX请求标志
            req.KeepAlive = true;



            req.ServicePoint.Expect100Continue = false;//不使用那种行为Continue 100行为,约束请求用的
            一种是用Headers来添加,但是只能部分添加,另一种是HttpWebRequest固有属性,如req.KeepAlive等 ;至于到底选择哪种方式呢?有一个原则:能通过一个属性的就用属性,比如KeepAlive表示头部的Connection;UserAgent表示头部的UserAgent等;但是标头键值没有对应的属性时,再用Headers这个集合性质的属性进行添加,如Cache-Control
2、布置要POST的内容(如果是GET方式就不用了)
            Stream s = req.GetRequestStream();//注意这里是引用,不是简单的赋值,最开始看到这个还以为是错误呢
            string cm="100009";
            string qid= textBox1.Text.Trim();
            qid = qid.Substring(qid.IndexOf("question/")+9,19);
            string title = "";
            string answerfr = "";
            string entry = "qb_submit";
            string cite = "";
            string rich = "1";
            string utdata = "111,74,112,111,113,111,112,111,113,111,112,111,113,111,112,111,113,111,112,111,113,74,118,122,113,118,119,74,114,114,112,123,111,117,119,115,13848662019671";
            string stoken = "4c05d1b485b73ff79dd7f7562ea079c8";
            string co="具体我也不是太清楚,可以在网上查一下";
            string strdata = "cm=" + cm + "&qid=" + qid + "&title=" + "&answerfr=" + "&entry=" + entry + "&cite=" + "&rich=" + rich +
                "&utdata=" + System.Web.HttpUtility.UrlEncode(utdata) + "&co=" + HttpUtility.UrlEncode(co) + "&stoken=" + stoken;//部分内容使用的Url转码
            byte[] bytes = Encoding.UTF8.GetBytes(strdata);
            s.Write(bytes, 0, bytes.Length);//把请求内容写入到请求对象中,以字节的方式


3、发送请求;只用一个方法
    Stream ret=req.GetResponse().GetResponseStream();//得到网络流


posted @ 2013-11-26 22:48  deeeeeed  阅读(653)  评论(0编辑  收藏  举报

pppppppppppppp