HttpWebRequest的使用之Get和Post的差别(C#)
这两天做的是通过一个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
HttpWebRequest的使用之Get和Post的差别(C#)的更多相关文章
- 利用HttpWebRequest实现实体对象的上传
一 简介 HttpWebRequest和HttpWebResponse类是用于发送和接收HTTP数据的最好选择.它们支持一系列有用的属性.这两个类位 于System.Net命名空间,默认情况下这个类对 ...
- C#通过WebClient/HttpWebRequest实现http的post/get方法
C#通过WebClient/HttpWebRequest实现http的post/get方法 http://www.cnblogs.com/shadowtale/p/3372735.html
- C# HttpWebRequest获取COOKIES
C# HttpWebRequest获取COOKIES byte[] bytes = Encoding.Default.GetBytes(_post); CookieContainer myCookie ...
- 在使用 HttpWebRequest Post数据时候返回 400错误
笔者有一个项目中用到了上传zip并解压的功能.开始觉得很简单,因为之前曾经做过之类的上传文件的功能,所以并不为意,于是使用copy大法.正如你所料,如果一切很正常的能运行的话就不会有这篇笔记了. 整个 ...
- .net学习笔记----HttpRequest,WebRequest,HttpWebRequest区别
WebRequest是一个虚类/基类,HttpWebRequest是WebRequest的具体实现 HttpRequest类的对象用于服务器端,获取客户端传来的请求的信息,包括HTTP报文传送过来的所 ...
- C#使用HttpWebRequest 进行请求,提示 基础连接已经关闭: 发送时发生错误。
本人今天遇到的错误,C#使用HttpWebRequest 进行请求,提示 基础连接已经关闭: 发送时发生错误. 测试了很久,才发现,是安全协议问题,把安全协议加上就可以了
- C# winfrom HttpWebRequest 请求获取html网页信息和提交信息
string result =GetRequest("http://localhost:32163/DuoBao/ajax.aspx", "time=5"); ...
- ASP.NET中使用HttpWebRequest调用WCF
最近项目需要和第三网站进行数据交换,第三方网站基本都是RESTfull形式的API,但是也有的是Web Service,或者.NET里面的WCF.微软鼓励大家使用WCF替代Web Service. W ...
- 【转】asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端
原文地址:http://docode.top/Article/Detail/10002 目录: 1.Http协议上传文件(以图片为例)请求报文体内容格式 2.完整版HttpWebRequest模拟上传 ...
随机推荐
- 关于防范csrf攻击基于token鉴权
在web开发中,之前都使用cookie + session方式来实现身份认证鉴权.但是现在前后端分离,以及终端有可能不支持cookie的情况下,一般都采用token方式.现在系统设计思路如下: 服务端 ...
- 【spring boot】application.properties官方完整文档
官方地址: https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/ 进入搜索: Appendice ...
- SYN4505型 标准同步时钟
SYN4505型 标准同步时钟 标准同步时钟电厂时间同步使用说明视频链接: http://www.syn029.com/h-pd-245-0_310_1_-1.html 请将此链接复制到浏览器打开观看 ...
- 接口和抽象类是否继承了Object
我们先看一下Java的帮助文档对于Object的描述: Class Object is the root of the class hierarchy. Every class has Object ...
- MySQL之SQL优化详解(三)
目录 MySQL 之SQL优化详解(三) 1. 索引优化 2. 剖析报告:Show Profile MySQL 之SQL优化详解(三) 1. 索引优化 一旦建立索引,select 查询语句的where ...
- SpringBoot启动访问JSP页面,直接进入页面或者访问不到,报404,并且加载tomcat插件tomcat-embed-jasper也不行
这个问题花费了两天的时间,解决路径: 我用的是SpringBoot1.5.2,SpringMVC和Spring,tomcat启动插件都是默认的版本,Spring是4.3.7,jdk是1.7.0_80, ...
- spring 5.x 系列第22篇 —— spring 定时任务 (代码配置方式)
源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 关于任务的调度配置定义在ServletCo ...
- Codeforces Round #565 (Div. 3) A
A. Divide it! 题目链接:http://codeforces.com/contest/1176/problem/A 题目 You are given an integer n You ca ...
- while循环语句、格式化输出、常用运算符、字符编码
1.while循环 while 空格 条件 冒号 缩进 循环体 num=1 while num<11: print(num) num=num+1 变量都是先执行等号右边的,然后执行等号左边的. ...
- python3的类
python3的类: python是一门面向对象的编程语言,学习python下的类,,能帮助自己形成一个基本的面向对象的概念.关于类和实例的理解,一个易懂的栗子就是动物类,我们把动物看做一个类,而狗啊 ...