读取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. mybatia的mypper.xml文件,参数类型为map,map里有一个键值对的值为数组,如何解析,例子可供参考,接上文,发现更简便的方法,不必传数组,只需传字符串用逗号隔开即可

    是这样的 先看参数 map.put("orgId", "1818"); map.put("childDeps", "1000,10 ...

  2. ASIHTTPRequest中的DELETE、PUT、GET、POST请求实例-备用

    感谢分享 //  ASIFormDataRequestTests.m //  Part of ASIHTTPRequest -> http://allseeing-i.com/ASIHTTPRe ...

  3. Lintcode--006(交叉字符串)

    Given three strings: s1, s2, s3, determine whether s3 is formed by the interleaving of s1 and s2. Ex ...

  4. node实现创建服务器获取wx jssdk签名

    // system module var http = require("http"); var https = require("https"); var u ...

  5. Linux & Python 导航目录

    < Python学习手册(第4版)>< Python Cookbook(第2版)>中文版.pdf< Python 高级编程>< Python 基础教程 第二版 ...

  6. 韩顺平HTML5教程www.gis520.com

    传智播客.韩顺平.HTML5游戏公开课-坦克大战01.HTML5介绍.HTML5发展.HTML5学习网站推荐.wmv http://dl.vmall.com/c0b7xrkftf 传智播客.韩顺平.H ...

  7. C#中dynamic、ExpandoObject 的正确用法

    原文地址:http://www.cnblogs.com/qiuweiguo/archive/2011/08/03/2125982.html dynamic是FrameWork4.0的新特性.dynam ...

  8. VS2012/2013编辑器问题

    1. Visual Studio 2013 'Could not evaluate Expression' Debugger Abnormality 解决办法:http://weblog.west-w ...

  9. python turtle,random,math

    # List imports here: import turtle import random import math # List constants here (NO MAGIC NUMBERS ...

  10. 使用AWS的EC2服务器,进行跳墙

    选Ubuntu的服务器 一开始先设置Root,命令:su root 在安装之前,先Update一下源:apt-get update update完就可以安装: 1.安装pi,命令:apt-get in ...