关闭

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

标签: HttpWebRequestGet和Post的差别HttpWebRequest报错400C#
3133人阅读 评论(1) 收藏 举报
分类:

        这两天做的是通过一个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

1
0
查看评论

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

HttpWebRequest GET POST
  • wxc238351
  • wxc238351
  • 2017-01-11 16:50
  • 1463

通过httpwebrequest实现http的post和get方法莫名出现500内部服务器错误的解决办法

通过httpwebrequest实现http的post方法 Dim data As Byte() data = System.Text.Encoding.UTF8.GetBytes("...") '需要post的参数...
  • CityBird
  • CityBird
  • 2017-04-25 12:58
  • 1285

应用HttpWebRequest接收post或get数据

/*接收post数据       string url=http://liuleiceshi.hexun.com/payment/WebForm1.aspx;      string stext = Htt...
  • GoodShot
  • GoodShot
  • 2012-02-09 00:39
  • 5687

HttpWebRequest GET 方式发送数据

///         /// 发送http请求         ///       &#...
  • rongaimeng
  • rongaimeng
  • 2012-12-13 11:18
  • 1567

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

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

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

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Configuration; using ...
  • smartsmile2012
  • smartsmile2012
  • 2017-05-08 17:33
  • 7060

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

代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net.Security; using System.Security.Cryptogra...
  • rongyongfeikai2
  • rongyongfeikai2
  • 2014-12-01 23:35
  • 56098

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

如何通过post来取得网页内容。使用同步操作的方法时,如果我其中的一个IP或是在进行转化的过程中,出现了问题, 哪么这个程序就会停下来,当然了,有的朋友可能会说,用try...catch也可以啊。因为我是循环取值,所以在catch里加一个continue就 行了。可是以前没有搞过异步操作,所以想用这...
  • liuyongkun1003
  • liuyongkun1003
  • 2015-08-31 20:24
  • 1819

C# HttpWebRequest用Post同时提交参数和文件的封装类

winfrom做文件上传,服务端是bs的,网站找的方法,谢谢作者 private static string HttpPostData(string url, int timeOut, string fileKeyName, ...
  • fuck487
  • fuck487
  • 2016-03-07 11:49
  • 3410

使用HttpWebRequest POST图片等文件,带参数

【转】 代码如下: public string HttpUploadFile(string url, string file, string paramName, string contentT...
  • oMingZi12345678
  • oMingZi12345678
  • 2013-09-15 14:16
  • 3602
    个人资料
    • 访问:307836次
    • 积分:4613
    • 等级:
    • 排名:第7557名
    • 原创:194篇
    • 转载:67篇
    • 译文:3篇
    • 评论:140条
    最新评论