Http GET、Post方式的请求总结
读取http响应信息,并返回响应体
/// <summary>
/// 读取http响应信息,并返回响应体
/// </summary>
/// <param name="response">HttpWebResponse对象</param>
/// <returns></returns>
public static string ReaderFromHttp(HttpWebResponse response)
{
Stream stream = null;
StreamReader streamReader = null;
try
{
var contentEncoding = response.ContentEncoding; //压缩标志
var characterSet = response.CharacterSet; //字符集 stream = response.GetResponseStream();
if (contentEncoding == "gzip")
{
/*压缩数据,要进行处理*/
throw new NotImplementedException("gzip压缩数据处理还么实现");
}
else
{
streamReader = new StreamReader(stream, Encoding.GetEncoding(characterSet));
return streamReader.ReadToEnd();
} }
catch (Exception e)
{
return null;
}
finally
{
if (streamReader != null)
{
streamReader.Close();
streamReader = null;
}
if (stream != null)
{
stream.Close();
stream = null;
}
}
}
Http Get
#region Get Http
/// <summary>
/// GET方式的HTTP请求
/// </summary>
/// <param name="targetUri"></param>
/// <param name="timeout">超时时间</param>
/// <param name="cookie">随同HTTP请求发送的Cookie信息</param>
/// <returns></returns>
public static HttpWebRequest CreateGetHttpWebRequest(string targetUri, int timeout = , CookieCollection cookie = null)
{
HttpWebRequest request = WebRequest.Create(targetUri) as HttpWebRequest;
request.UserAgent = DefaultUserAgent;
request.Method = "GET";
if (timeout != )
request.Timeout = timeout;
if (cookie != null)
{
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(cookie);
}
return request;
}
/// <summary>
/// GET方式的HTTP请求,返回响应体
/// </summary>
/// <param name="targetUri"></param>
/// <param name="timeout">超时时间</param>
/// <param name="cookie">随同HTTP请求发送的Cookie信息</param>
/// <returns></returns>
public static string ReturnFromGetHttp(string targetUri, int timeout = , CookieCollection cookie = null)
{
HttpWebRequest request = null;
HttpWebResponse response = null;
try
{
request = CreateGetHttpWebRequest(targetUri, timeout, cookie);
response = request.GetResponse() as HttpWebResponse;
return ReaderFromHttp(response);
}
catch (Exception e)
{
return null;
}
finally
{
if (response != null)
{
response.Close();
response = null;
}
if (request != null)
{
request.Abort();
request = null;
}
}
}
#endregion
Http Post
#region Post Http
/// <summary>
/// POST方式的HTTP请求
/// </summary>
/// <param name="targetUri"></param>
/// <param name="content">请求文本信息</param>
/// <param name="characterSet">字符集(默认utf-8)</param>
/// <param name="timeout">超时时间</param>
/// <param name="cookie">随同HTTP请求发送的Cookie信息</param>
/// <returns></returns>
public static HttpWebRequest CreatePostHttpWebRequest(string targetUri, string content, string characterSet = null, int timeout = , CookieCollection cookie = null)
{
HttpWebRequest request = WebRequest.Create(targetUri) as HttpWebRequest;
request.UserAgent = DefaultUserAgent;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.Headers.Add("Accept-Encoding", "gzip, deflate");
if (timeout != )
request.Timeout = timeout;
if (cookie != null)
{
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(cookie);
}
using (var stream = request.GetRequestStream()) //写入请求数据流
{
characterSet = string.IsNullOrEmpty(characterSet) ? "utf-8" : characterSet;
var bytes = Encoding.GetEncoding(characterSet).GetBytes(content);
request.ContentLength = bytes.LongLength;
stream.Write(bytes, , bytes.Length);
}
return request;
}
/// <summary>
/// POST方式的HTTP请求,返回响应体
/// </summary>
/// <param name="targetUri"></param>
/// <param name="content">请求文本信息</param>
/// <param name="characterSet">字符集(默认utf-8)</param>
/// <param name="timeout">超时时间</param>
/// <param name="cookie">随同HTTP请求发送的Cookie信息</param>
/// <returns></returns>
public static string ReturnFromPostHttp(string targetUri, string content, string characterSet = null, int timeout = , CookieCollection cookie = null)
{
HttpWebRequest request = null;
HttpWebResponse response = null;
try
{
request = CreatePostHttpWebRequest(targetUri,content,characterSet, timeout, cookie);
response = request.GetResponse() as HttpWebResponse;
return ReaderFromHttp(response);
}
catch (Exception e)
{
return null;
}
finally
{
if (response != null)
{
response.Close();
response = null;
}
if (request != null)
{
request.Abort();
request = null;
}
}
}
#endregion
调用方式:
var reval = ReturnFromGetHttp("http://www.douyou100.com");
var reval1 = ReturnFromPostHttp("http://www.douyou100.com","请求文本");
Http GET、Post方式的请求总结的更多相关文章
- Strus默认跳转方式是请求转发 地址栏不变 与javaweb的内部转发一样
Strus默认跳转方式是请求转发 地址栏不变 与javaweb的内部转发一样
- NGINX不允许向静态文件提交POST方式的请求,否则报405错误(apache中没有出现)
telnet *.*.*.* 80POST /map/navigation/2011winter/jsn/jsn_20120723_pack/pvf.jsnHTTP/1.1Host:*.*.*.* ( ...
- C# Post Get 方式发送请求
httpPost 方式发送请求 不带参数 /// <summary> /// 没有参数的post请求 /// </summary> public void HttpPostNo ...
- 限制action所接受的请求方式或请求参数
原文:http://www.cnblogs.com/liukemng/p/3726897.html 2.限制action所接受的请求方式(get或post): 之前我们在HelloWorldContr ...
- python实现的json数据以HTTP GET,POST,PUT,DELETE方式页面请求
一.JSON简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programm ...
- c# post方式发送请求
public static bool CheckNew(string serverIP) { bool passed = false; try { string url = string.Format ...
- SpringMVC(二):RequestMapping修饰类、指定请求方式、请求参数或请求头、支持Ant路径
@RequestMapping用来映射请求:RequestMapping可以修饰方法外,还可以修饰类 1)SpringMVC使用@RequestMapping注解为控制指定可以处理哪些URL请求: 2 ...
- Play framework框架中通过post方式发送请求
搞了好久这个最终还是在play官方文档中看见的发送请求的方式,国内好像很少有使用这个框架的,加之自己不是太愿意宣传,好东西总归是好东西,不说废话了. 在play中发送请求有两种常用的方式,一种get, ...
- Spring RestTemplate中几种常见的请求方式GET请求 POST请求 PUT请求 DELETE请求
Spring RestTemplate中几种常见的请求方式 原文地址: https://blog.csdn.net/u012702547/article/details/77917939 版权声明 ...
随机推荐
- [POJ] 1274 The Perfect Stall(二分图最大匹配)
题目地址:http://poj.org/problem?id=1274 把每个奶牛ci向它喜欢的畜栏vi连边建图.那么求最大安排数就变成求二分图最大匹配数. #include<cstdio> ...
- logstash 发送zabbix告警
<pre name="code" class="html">[elk@dr-mysql01 test]$ cat t1.conf input { s ...
- FILTER 哪里没展开改哪里
SELECT * FROM F_PTY_INDIV_TMP O WHERE EXISTS (SELECT 1 FROM F_PTY_INDIV F WHERE O.PTY_ID = F.PTY_ID ...
- 读书笔记:java并发
java中主要的同步机制是关键字synchronized,它提供一种独占锁,但是 同步这个术语还包括validate类型的变量,显示锁(Explicit Lock)以及原子变量. -------显示锁 ...
- 初入Python继承
1.什么是继承? 新类不用从头编写 新类从现有的类继承,就自动拥有了现有类的所有功能 新类只需要编写现有类缺少的新功能 2.继承的好处 复用已有代码 自动拥有了现有类的所有功能 只需要编写缺少的新功能 ...
- LoadRunner测试下载功能点脚本(方法一)
性能需求:对系统某页面中,点击下载功能做并发测试,以获取在并发下载文件的情况下系统的性能指标. 备注:页面上点击下载时的文件可以是word.excel.pdf等. 问题1:录制完下载的场景后,发现脚本 ...
- Android调用系统邮件类应用的正确实现方法
Android应用开发中,很多情况下免不了要调用手机上的邮件类应用,实现邮件发送的功能,这一般是通过调用系统已有的Intent来实现的.看到网上很多邮件发送都是调用action为android.con ...
- windows系统还原
windows系统还原 windows 系统还原有两种方法: 方法一.开始-控制面板-系统和安全-备份和还原 (或者开始—所有程序—附件—系统工具—系统还原) 详细请看下面的截图说明 方法二.开机的时 ...
- python之面向对象(一)
python编程分为三个阶段: 面向过程编程:根据业务逻辑从上到下垒 函数式编程:将某功能进行函数封装,使用时调用函数即可,减少代码重复量 面向对象编程:对函数进行分类和封装 理论上我们是比较鄙视面向 ...
- Visual Studio 命中断点时 打印信息
打印时间: 开始: {DateTime.Now.ToString()} 结束: {DateTime.Now.ToString()} 搜索 复制