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();//得到网络流


  • 相关阅读:
    让外部网络访问K8S service的四种方式
    Kubernetes 针对资源紧缺处理方式的配置
    基于Prometheus,Alermanager实现Kubernetes自动伸缩
    ubuntu16.04下python2、python3环境选择与python升级(pip版本切换)
    学习资源集锦
    tensorflow :ckpt模型转换为pytorch : hdf5模型
    SoftMax多分类器原理及代码理解
    玩转树莓派3
    keras_基本网络层结构(2)_卷积层
    keras_基本网络层结构(1)_常用层
  • 原文地址:https://www.cnblogs.com/ddx-deng/p/3755844.html
Copyright © 2011-2022 走看看