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 版权声明 ...
随机推荐
- 摘录 javescript 常用函数
- NSNotificationCenter基础知识
NSNotificationCenter基础知识 Notification的工作机制 1.对应用程序中其他地方发生的事件(比如增加一条数据库记录)感兴趣的对象,会向通告中心(Notificatio ...
- 使用 ExpandableListView 实现折叠ListView
1:layout/expandablelistview_groups.xml 标题文件 <?xml version="1.0" encoding="utf-8&qu ...
- Android之断点续传下载
今天学习了Android开发中比较难的一个环节,就是断点续传下载,很多人看到这个标题就感觉头大,的确,如果没有良好的逻辑思维,这块的确很难搞明白.下面我就将自己学到的知识和一些见解写下供那些在这个环节 ...
- Java Json开源解析包 google-gson download(下载)
官方下载地址:http://code.google.com/p/google-gson/ http://files.cnblogs.com/hnrainll/google-gson-2.1-relea ...
- python sqlite3使用
python sqlite3文档地址:http://docs.python.org/2/library/sqlite3.html The sqlite3 module was written by G ...
- Java Access Levels(访问控制)
Access Levels Modifier Class Package Subclass World public Y Y Y Y protected Y Y Y N no modifier Y Y ...
- dp优化简单总结
1.二分优化 (使用二分查找优化查找效率) 典型例题:LIS dp[i]保存长度为 i 的上升子序列中最小的结尾,可以用二分查找优化到nlogn 2.数学优化 (通过数学结论减少状态数) 例题1:hd ...
- 玩转指针(Playing with Pointers)
Question: What is a Pointer? What are its limitations? What are its benefits? How do we use it? What ...
- Hibernate的几种查询方式-HQL,QBC,QBE,离线查询,复合查询,分页查询
HQL查询方式 这一种我最常用,也是最喜欢用的,因为它写起来灵活直观,而且与所熟悉的SQL的语法差不太多.条件查询.分页查询.连接查询.嵌套查询,写起来与SQL语法基本一致,唯一不同的就是把表名换成了 ...