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

Http请求之--C#的HttpWebRequest实现POST方式请求的更多相关文章

  1. C# HttpWebRequest GET HTTP HTTPS 请求

    下面是我编写的一个辅助类,在这个类中采用了HttpWebRequest中发送GET/HTTP/HTTPS请求,因为有的时候需要获取认证信息(如Cookie),所以返回的是HttpWebResponse ...

  2. 使用 HttpWebRequest 发送模拟 POST 请求

    使用HttpWebRequest发送模拟POST请求  网页中,如果form的method="POST",这时点击submit按钮可以给服务器发送了一个POST请求,如果metho ...

  3. 【转】C# HttpWebRequest提交数据方式

    [转]C# HttpWebRequest提交数据方式 HttpWebRequest和HttpWebResponse类是用于发送和接收HTTP数据的最好选择.它们支持一系列有用的属性.这两个类位 于Sy ...

  4. IIS请求筛选模块被配置为拒绝超过请求内容长度的请求

    HTTP错误404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求,原因是Web服务器上的请求筛选被配置为拒绝该请求,因为内容长度超过配置的值(IIS 7 默认文件上传大 ...

  5. android 之HttpURLConnection的post,get方式请求数据

    get方式和post方式的区别: 1.请求的URL地址不同: post:"http://xx:8081//servlet/LoginServlet" get:http://xxx: ...

  6. HTTP错误404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求

    http://www.cnblogs.com/JKqingxinfeng/archive/2012/10/29/2744663.html HTTP错误404.13 - Not Found 请求筛选模块 ...

  7. Ajax详解及其案例分析------如何获得Ajax对象,使用Ajax对象发送GET和POST请求,校验用户名,POST和GET请求时的乱码处理,实现级联的下拉列表

    本节主要内容预览: 1 获得Ajax对象 2 使用Ajax对象发送GET请求 3 使用Ajax对象发送POST请求 4 使用Ajax校验用户名 5 POST请求时的乱码处理 6 GET请求时的乱码处理 ...

  8. C# HttpWebRequest提交数据方式浅析

    C# HttpWebRequest提交数据方式学习之前我们先来看看什么是HttpWebRequest,它是 .net 基类库中的一个类,在命名空间 System.Net 下面,用来使用户通过HTTP协 ...

  9. JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求

    JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求 哇,一看标题怎么这么长啊,其实意思很简单,哥讨厌用HTTP Client做POST与GET提交 觉得那个毕竟是别人写 ...

随机推荐

  1. oracle主键自增

    oracle主键自增 1建立数据表 create table Test_Increase(            userid number(10) primary key,  /*主键,自动增加*/ ...

  2. c#学习<二>:数据类型

    基元类型 编译器直接支持的数据类型称为基元类型(primitive type).基元类型直接映射到Framework类库(FCL)中存在的类型(BCL是FCL的子集). C#中的基元类型 BCL类型 ...

  3. 关于ArrayList 容量问题

    ArrayList 是实现List 接口的动态数组,即它的容量大小是可变的.允许包括null 在内的所欲元素. 每个ArrayList 实例都有一个容量,该容量是指用来存储列表元素的数组的大小.默认初 ...

  4. dede使用方法----如何转换时间戳

    dede用sql调用一个mysql时间,mysql的时间字段是时间戳展示的,突然不知道咋转换了,有点迷茫,结果找了下,发现其实很简单,直接用dede的就行了,如下: 完整时间:[field:datel ...

  5. JAVA gc垃圾回收机制

    一.GC概要   JVM堆相关知识     为什么先说JVM堆?     JVM的堆是Java对象的活动空间,程序中的类的对象从中分配空间,其存储着正在运行着的应用程序用到的所有对象.这些对象的建立方 ...

  6. Web前端性能优化教程02:使用内容分发网络

    基础知识 服务器离用户越近,HTTP请求的响应时间将更短. CNAME:别名记录,当多个域名需要指向同一服务器IP,可以使用一个域名做A记录指向该服务器IP,然后让多个域名指向该A记录. ICP:In ...

  7. MySQL必知必会的查询

    前言: 据身边不少朋友反映,SQL长时间不用的话难免会生疏!本文的几个查询示例可以让你5分钟内快速回忆起MySQL中常用的基础查询语法! ------------ 如何用MySQL解决一些常见问题的例 ...

  8. Java栈的实例模拟

    前言: “后进先出”---是栈(Stack)这种数据结构最基本的特点.很多程序设计语言都具有封装好的Stack工具,本文就带领大家一起将栈温习一下并附上一个模拟栈的程序. Java内存分配中,每通过n ...

  9. eclipse中xml文件不能自动提示的解决办法

    1.出现不能提示的情况

  10. 【bzoj2152】 聪聪可可

    http://www.lydsy.com/JudgeOnline/problem.php?id=2152 (题目链接) 题意 给出一棵n个节点的带权树,求有多少点对的距离是3的倍数. solution ...