C#.net模拟提交表单GET、POST

原创 2011年03月01日 17:30:00

方法一、
System.Net.WebClient WebClientObj         = new System.Net.WebClient();
    System.Collections.Specialized.NameValueCollection PostVars   = new System.Collections.Specialized.NameValueCollection();
    PostVars.Add("A1","0");
    PostVars.Add("A2","0");
    PostVars.Add("A3","000");

    try
    {
     byte[] byRemoteInfo    = WebClientObj.UploadValues("http://www.lovezhao.com/vote.asp","POST",PostVars);
     //下面都没用啦,就上面一句话就可以了
     string sRemoteInfo    = System.Text.Encoding.Default.GetString(byRemoteInfo);  
     //这是获取返回信息
     richTextBox_instr.Text   += sRemoteInfo;
    }
    catch
    {}



方法二、
string url = "网址";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
string s = "要提交的数据";
byte[] requestBytes = System.Text.Encoding.ASCII.GetBytes (LoginInfo);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = requestBytes.Length;
Stream requestStream = req.GetRequestStream();
requestStream.Write(requestBytes,0,requestBytes.Length);
requestStream.Close();
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
StreamReader sr = new StreamReader(res.GetResponseStream(), System.Text.Encoding.Default);
string backstr = sr.ReadToEnd(); Response.Write(line); sr.Close(); res.Close();

http://www.kaohuo.com/software/3/

ttpWebRequest 是 .net 基类库中的一个类,在命名空间 System.Net 下面,用来使用户通过 HTTP 协议和服务器交互。

HttpWebRequest 对 HTTP 协议进行了完整的封装,对 HTTP 协议中的 Header, Content, Cookie 都做了属性和方法的支持,很容易就能编写出一个模拟浏览器自动登录的程序。

程序使用 HTTP 协议和服务器交互主要是进行数据的提交,通常数据的提交是通过 GET 和 POST 两种方式来完成,下面对这两种方式进行一下说明:

1. GET 方式。 GET 方式通过在网络地址附加参数来完成数据的提交,比如在地址 http://www.google.com/webhp?hl=zh-CN 中,前面部分 http://www.google.com/webhp 表示数据提交的网址,后面部分 hl=zh-CN 表示附加的参数,其中 hl 表示一个键(key), zh-CN 表示这个键对应的值(value)。程序代码如下:

HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "http://www.google.com/webhp?hl=zh-CN " );
req.Method = "GET";
using (WebResponse wr = req.GetResponse())
{
   //在这里对接收到的页面内容进行处理
}

2. POST 方式。 POST 方式通过在页面内容中填写参数的方法来完成数据的提交,参数的格式和 GET 方式一样,是类似于 hl=zh-CN&newwindow=1 这样的结构。程序代码如下:

string param = "hl=zh-CN&newwindow=1";
byte[] bs = Encoding.ASCII.GetBytes(param);

HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "http://www.google.com/intl/zh-CN/ " );
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = bs.Length;

using (Stream reqStream = req.GetRequestStream())
{
   reqStream.Write(bs, 0, bs.Length);
}
using (WebResponse wr = req.GetResponse())
{
   //在这里对接收到的页面内容进行处理
}

在上面的代码中,我们访问了 www.google.com 的网址,分别以 GET 和 POST 方式提交了数据,并接收了返回的页面内容。然而,如果提交的参数中含有中文,那么这样的处理是不够的,需要对其进行编码,让对方网站能够识别。

3. 使用 GET 方式提交中文数据。 GET 方式通过在网络地址中附加参数来完成数据提交,对于中文的编码,常用的有 gb2312 和 utf8 两种,用 gb2312 方式编码访问的程序代码如下:

Encoding myEncoding = Encoding.GetEncoding("gb2312");
string address = "http://www.baidu.com/s ?" + HttpUtility.UrlEncode("参数一", myEncoding) + "=" + HttpUtility.UrlEncode("值一", myEncoding);
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(address);
req.Method = "GET";
using (WebResponse wr = req.GetResponse())
{
   //在这里对接收到的页面内容进行处理
}

在上面的程序代码中,我们以 GET 方式访问了网址 http://www.baidu.com/s ,传递了参数“参数一=值一”,由于无法告知对方提交数据的编码类型,所以编码方式要以对方的网站为标准。常见的网站中, www.baidu.com (百度)的编码方式是 gb2312, www.google.com (谷歌)的编码方式是 utf8。

4. 使用 POST 方式提交中文数据。 POST 方式通过在页面内容中填写参数的方法来完成数据的提交,由于提交的参数中可以说明使用的编码方式,所以理论上能获得更大的兼容性。用 gb2312 方式编码访问的程序代码如下:

Encoding myEncoding = Encoding.GetEncoding("gb2312");
string param = HttpUtility.UrlEncode("参数一", myEncoding) + "=" + HttpUtility.UrlEncode("值一", myEncoding) + "&" + HttpUtility.UrlEncode("参数二", myEncoding) + "=" + HttpUtility.UrlEncode("值二", myEncoding);

byte[] postBytes = Encoding.ASCII.GetBytes(param);

HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "http://www.baidu.com/s " );
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded;charset=gb2312";
req.ContentLength = postBytes.Length;

using (Stream reqStream = req.GetRequestStream())
{
   reqStream.Write(bs, 0, bs.Length);
}
using (WebResponse wr = req.GetResponse())
{
   //在这里对接收到的页面内容进行处理
}

从上面的代码可以看出, POST 中文数据的时候,先使用 UrlEncode 方法将中文字符转换为编码后的 ASCII 码,然后提交到服务器,提交的时候可以说明编码的方式,用来使对方服务器能够正确的解析。

以上列出了客户端程序使用 HTTP 协议与服务器交互的情况,常用的是 GET 和 POST 方式。现在流行的 WebService 也是通过 HTTP 协议来交互的,使用的是 POST 方法。与以上稍有所不同的是, WebService 提交的数据内容和接收到的数据内容都是使用了 XML 方式编码。所以, HttpWebRequest 也可以使用在调用 WebService 的情况下。

 

引用自:http://blog.csdn.net/lovedelphi2006/archive/2009/05/27/4220545.aspx

C#.net模拟提交表单POST

http://hi.baidu.com/37116566/blog/item/fbedc7ce84e3ab0092457e56.html 方法一、System.Net.WebClient WebCli...
  • lovedelphi2006
  • lovedelphi2006
  • 2009年05月27日 15:06
  • 5733

jquery 表单提交 ajax post get

jquery ajax $(document).ready(function () { $('#send_ajax').click(function (){ var param...
  • u010395804
  • u010395804
  • 2014年07月25日 16:19
  • 1576

HttpClient4模拟表单提交

这里用httpclient4.3模拟一个表单普通文本提交的方法 建一个servlet接受表单数据,只传递2个参数,name和password //servlet的访问地址是:http://localh...
  • ngaveup
  • ngaveup
  • 2013年11月26日 15:20
  • 4331

模拟post,get请求的工具

1.浏览器插件一般是使用插件的,个人感觉最好用的是chrome下的Postman或DHC;firefox下还可以使用RESTClient。 2.客户端工具 HTTPieHTTPie是非常好的模拟请求工...
  • gaokao2011
  • gaokao2011
  • 2016年08月16日 10:33
  • 1184

python get,post提交表单

# -*- coding: cp936 -*- import urllib2,urllib,sys """ 使用GET在百度搜索引擎上查询 在百度的搜索条中随便输入一些内容,会有w和cl两项构成GET...
  • junli_chen
  • junli_chen
  • 2016年12月12日 11:35
  • 1382

提交表单--get与post方式

我们经常在网页上输入信息,然后通过按钮提交,有两种提交方式,get和post get方式效率高但安全性低,post是封装后进行提交安全性高。 get方式经常用于搜索,查询   post常用与用户注...
  • qq_16255321
  • qq_16255321
  • 2017年01月26日 15:49
  • 986

在vc中如何用post方法提交表单

我这里有一段程序,用来在一个对话框里显示出一次http request的原始信息,不过使用Inet API做的,希望能有帮助。// Allocates a buffer of the size ret...
  • doubleuto
  • doubleuto
  • 2010年09月20日 11:21
  • 2423

JQuery模拟form POST提交

JQuery模拟form POST提交/** * JQuery模拟form POST提交 * Created by Steven Guo on 2016/3/22. */ define(func...
  • github_33644920
  • github_33644920
  • 2016年03月22日 14:16
  • 9433

C#模拟POST提交表单

C#模拟POST提交表单(一)--WebClient              分类:             C#              2011-11-15 11:03     1...
  • ijustcalledtosay
  • ijustcalledtosay
  • 2014年10月15日 16:15
  • 512

PHP表单处理-GET与POST区别

PHP表单处理 form表单的提交主要有两种方式:get和post GET方法接收的特点:所有输入的数据被加载到请求的URL地址后面,数据通过键/值对的方法加载。 GET方法接收的特点:把数...
  • freshlover
  • freshlover
  • 2013年02月21日 12:17
  • 8606
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#.net模拟提交表单GET、POST
举报原因:
原因补充:

(最多只允许输入30个字)