HttpWebRequest的使用之Get和Post的差别(C#)

原创 2015年11月19日 13:40:03

        这两天做的是通过一个HttpWebRequest将采集地址发送到服务端,服务端会返回一个JSON格式的字符串,然后我这边再对这个JSON进行反序列化,得到我想要的数据。在这篇文章里我简单介绍一下HttpWebRequest中“Get”和“Post”的差别。

两种方式的区别:

        Get使用的是“域名?keys=values1,values2...”在?后附加参数的形式进行传参,而Post使用的是将?后的参数写一个string字符串,再将字符串转换为byte[],然后使用域创建一个HttpWebReques对象,在用这个对象创建一个用于写入请求的对象,最后通过写入参数的方式传参。因为两种方式传参的方式的不同所以两者最大的区别在于get传参有长度限制,而post传参在服务端允许的情况可以无限长(大部分有长度限制)。

        HttpWebRequest类主要利用HTTP 协议和服务器交互,通常是通过 GET 和 POST 两种方式来对数据进行获取和提交。下面对这两种方式进行一下说明:

GET 方式:
GET 方式通过在网络地址附加参数来完成数据的提交,比如在地址 http://blog.csdn.net/finish_dream/article/details/47216969?hh=521中,前面部分http://blog.csdn.net/finish_dream/article/details/47216969t表示数据提交的网址,后面部分hh=521 表示附加的参数,其中hh 表示一个键(key),521表示这个键对应的值(value)。

HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "http://blog.csdn.net/finish_dream/article/details/47216969?hh=521" );

req.Method = "GET";

using (WebResponse wr = req.GetResponse())

{

//在这里对接收到的页面内容进行处理

}

POST方式:

POST方式通过写入参数的方式传参.

string param = "hh=521";

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

HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "http://blog.csdn.net/finish_dream/article/details/47216969" );

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())

{

   //在这里对接收到的页面内容进行处理

}
无论传输方式是Get还是Post只要传输的参数中有中文,只需要对中文进行编码,然后正常组成string类型字符串即可;

注意:

1.Get方式有"?",而Post方式没有。

2.Get方式可以不设置req.ContentType或者设置成

req.ContentType = "application/json";
而Post方式需要设置成

req.ContentType = "application/x-www-form-urlencoded";
否则会报错400

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C#利用HttpWebRequest进行post请求的示例(HTTPS)

代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sy...

利用HttpWebRequest实现POST和GET方法

注:要将System.Web.DLL加入引用 using System; using System.Collections.Generic; using System.ComponentMo...

HttpWebRequest发送Post数据

其实发送和get差不多需要额外多注意的是:1:post的时候必须设置request.ContentType = "application/x-www-form-urlencoded"; 如果是上传的话...

使用HttpWebRequest的POST取得网页内容(异步操作)2篇集合

如何通过post来取得网页内容。使用同步操作的方法时,如果我其中的一个IP或是在进行转化的过程中,出现了问题, 哪么这个程序就会停下来,当然了,有的朋友可能会说,用try...catch也可以啊。因为...

C#模拟POST提交表单(二)--HttpWebRequest以及HttpWebResponse

上次介绍了用WebClient的方式提交POST请求,这次,我继续来介绍用其它一种方式 HttpWebRequest以及HttpWebResponse 自认为与上次介绍的WebClient...
  • xizhibei
  • xizhibei
  • 2011年11月19日 23:21
  • 37103

C# 使用HttpWebRequest Post提交数据,携带Cookie和相关参数示例

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T...

通过HttpWebRequest分别向服务器发送GET或POST请求

10. 通过HttpWebRequest分别向服务器发送GET或POST请求2009-09-17 16:52:45|  分类: 知识代码库 |  标签: |字号大中小 订阅 1.建立一个控制台应用程序...

HttpWebRequest GET 方式发送数据

///         /// 发送http请求         ///         /// 请求参数         /// 正常返回接口报文的xml字符串,否则返回空串     ...

在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求

这个需求来自于我最近练手的一个项目,在项目中我需要将一些自己发表的和收藏整理的网文集中到一个地方存放,如果全部采用手工操作工作量大而且繁琐,因此周公决定利用C#来实现。在很多地方都需要验证用户身份才可...

C#通过WebClient/HttpWebRequest实现http的post/get方法

//body是要传递的参数,格式"roleId=1&uid=2" //post的cotentType填写: //"application/x-www-form-urlencoded" //soap填写...
  • eit520
  • eit520
  • 2015年10月14日 10:41
  • 3274
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HttpWebRequest的使用之Get和Post的差别(C#)
举报原因:
原因补充:

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