读取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方式的请求总结的更多相关文章

  1. Strus默认跳转方式是请求转发 地址栏不变 与javaweb的内部转发一样

    Strus默认跳转方式是请求转发 地址栏不变 与javaweb的内部转发一样

  2. NGINX不允许向静态文件提交POST方式的请求,否则报405错误(apache中没有出现)

    telnet *.*.*.* 80POST /map/navigation/2011winter/jsn/jsn_20120723_pack/pvf.jsnHTTP/1.1Host:*.*.*.* ( ...

  3. C# Post Get 方式发送请求

    httpPost 方式发送请求 不带参数 /// <summary> /// 没有参数的post请求 /// </summary> public void HttpPostNo ...

  4. 限制action所接受的请求方式或请求参数

    原文:http://www.cnblogs.com/liukemng/p/3726897.html 2.限制action所接受的请求方式(get或post): 之前我们在HelloWorldContr ...

  5. python实现的json数据以HTTP GET,POST,PUT,DELETE方式页面请求

    一.JSON简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programm ...

  6. c# post方式发送请求

    public static bool CheckNew(string serverIP) { bool passed = false; try { string url = string.Format ...

  7. SpringMVC(二):RequestMapping修饰类、指定请求方式、请求参数或请求头、支持Ant路径

    @RequestMapping用来映射请求:RequestMapping可以修饰方法外,还可以修饰类 1)SpringMVC使用@RequestMapping注解为控制指定可以处理哪些URL请求: 2 ...

  8. Play framework框架中通过post方式发送请求

    搞了好久这个最终还是在play官方文档中看见的发送请求的方式,国内好像很少有使用这个框架的,加之自己不是太愿意宣传,好东西总归是好东西,不说废话了. 在play中发送请求有两种常用的方式,一种get, ...

  9. Spring RestTemplate中几种常见的请求方式GET请求 POST请求 PUT请求 DELETE请求

    Spring RestTemplate中几种常见的请求方式 原文地址: https://blog.csdn.net/u012702547/article/details/77917939   版权声明 ...

随机推荐

  1. contentSize、contentInset和contentOffset区别

    contentSize.contentInset和contentOffset区别 分类: iphone开发2011-12-05 21:49 23495人阅读 评论(4) 收藏 举报 uiviewios ...

  2. GO不支持数组通过函数参数更改,有点不一样

    package main import "fmt" func modify(array []int) { array[] = fmt.Println("In modify ...

  3. authbind start tomcat services as user with less that 1024 ports. linux常规用户使用tomcat的80端口

    Start tomcat services using authbind this will allow user to start ports less than 1024 we do not ne ...

  4. linux下core文件设置(转)

    在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息).使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数. 1.core文件的生成开 ...

  5. javascript 典型闭包的用法

    <body><input type="radio" id="radio1" name="readionGroup" /&g ...

  6. VC青睐服装订制网站 市场规模超3000亿美元 - 找VC - 创业邦

    VC青睐服装订制网站 市场规模超3000亿美元 - 找VC - 创业邦 VC青睐服装订制网站 市场规模超3000亿美元

  7. centerOS安装rkhunter

    rkhunter是专业检测系统是否感染rootkit的一个工具: rkhunter-1.4.2.tar.gz 解压后直接安装: #./installer.sh --layout defualt --i ...

  8. C# - List操作 - 按照字母排序

    有Family的类如下: public class FamilyModel { public string Name { set; get; } } 创建List List<FamilyMode ...

  9. myeclipse实现Servlet实例(3) 通过继承HttpServlet接口实现

    (1) 在软件公司 90%都是通过该方法开发. //在HttpServlet 中,设计者对post 提交和 get提交分别处理   //回忆 <form action="提交给?&qu ...

  10. hdu 5159 Card (期望)

    Problem Description There are x cards on the desk, they are numbered from 1 to x. The score of the c ...