zoukankan      html  css  js  c++  java
  • 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();//得到网络流


  • 相关阅读:
    进行C# 编写发送邮箱,报错Error: need EHLO and AUTH first !
    vue使jsZip和FileSaver.js打包下载
    基于js或vue项目实现一次批量文件下载功能
    模块
    now 与 down 中的 ow 发音是否一样?
    __time64_t 解决了 2038 年问题,可是没解决 1969年问题
    MagickSetOption(mw, "jpeg:extent", "...kb"); 这个函数有时结果出乎意料
    解决Idea启动Spring Boot很慢的问题
    CAP原理和BASE思想和ACID模型
    java并发编程之Condition
  • 原文地址:https://www.cnblogs.com/ddx-deng/p/3755844.html
Copyright © 2011-2022 走看看