最近因为工作关系,需要通过HttpWebRequest去请求API,所有就写了个简单的辅助public sealed class HttpRequestHelper

    {
private static string USER_AGENT = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36";
private static string ACCEPT = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
private static string CONTENT_TYPE = "application/x-www-form-urlencoded; encoding=UTF-8";
/// <summary>
/// 单例
/// </summary>
private static volatile HttpRequestHelper instance;
private static object syncRoot = new object();
private HttpRequestHelper() { } public static HttpRequestHelper Instance
{
get
{
if (instance == null)
{
lock (syncRoot)
{
if (instance == null)
{
instance = new HttpRequestHelper();
}
}
} return instance;
}
} /// <summary>
/// Get请求
/// </summary>
/// <param name="queryString">url参数</param>
/// <returns>json格式结果</returns>
public string Get(string URL)
{
string ret = string.Empty;
URL = URL.Replace("ACCESS_TOKEN", WxTokenHelper.Instance.Token);
var request = CreateRequest("GET", URL);
var response = request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8);
ret = readStream.ReadToEnd();
readStream.Close();
return ret;
} public string GetToken(string URL)
{
string ret = string.Empty;
var request = CreateRequest("GET", URL);
var response = request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8);
ret = readStream.ReadToEnd();
readStream.Close();
return ret;
} /// <summary>
/// Post请求
/// </summary>
/// <param name="URL">请求的URL</param>
/// <param name="jsonData">json格式参数</param>
/// <returns>json格式结果</returns>
public string Post(string URL, string jsonData)
{
string ret = string.Empty;
URL = URL.Replace("ACCESS_TOKEN", WxTokenHelper.Instance.Token);
var request = CreateRequest("POST", URL); if (!string.IsNullOrWhiteSpace(jsonData))
{
byte[] data = Encoding.UTF8.GetBytes(jsonData);
request.ContentLength = data.Length;
using (var requestStream = request.GetRequestStream())
{
requestStream.Write(data, , data.Length);
}; var response = request.GetResponse() as HttpWebResponse;
using (var responseStream = response.GetResponseStream())
{
using (var readStream = new StreamReader(responseStream, Encoding.UTF8))
{
ret = readStream.ReadToEnd();
}
}
} return ret;
} private HttpWebRequest CreateRequest(string method, string URL)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
request.Accept = ACCEPT;
request.UserAgent = USER_AGENT;
request.Method = method;
request.ContentType = CONTENT_TYPE;
     request.Proxy = null;
return request;
}
}

记录HttpWebRequest辅助类的更多相关文章

  1. 『备忘』HttpWebRequest 在 POST 提交时, 标头(Headers)丢失原因

    近来研究 HttpWebRequest —— 辅助类完成时,POST JSON数据 总会 丢失标头(Headers). HttpWebRequest POST JSON数据,分如下几步: > 将 ...

  2. 负载,性能测试工具-Gatling

    前言 Gatling Gatling是一款功能强大的负载测试工具,它为易于使用,高可维护性和高性能而设计. 开箱即用,Gatling由于对HTTP协议的出色支持,使其成为负载测试任何HTTP服务器的首 ...

  3. 记录一次排查使用HttpWebRequest发送请求的发生“基础连接已关闭:接收时发生错误”异常问题的过程

    描述:某次更新程序,需要给测试员MM测试,之前都是正常的,更新后给MM测试就报异常System.Net.WebException 基础连接已经关闭:接收时发生错误 -------> System ...

  4. httpwebrequest 模拟登录 获取cookies 以前的代码,记录备忘!

    2个类,一个基类,一个构建头信息调用类 关于如何获取到post中的内容,你之需要用http抓包工具把你与目标网站的请求信息抓下来后,打开分析下按照抓下来的包中的数 据进行构建就行了 using Sys ...

  5. HttpWebRequest请求http1.1的chunked的解析问题记录

    问题:我的请求获取不到URL对应的内容(换个浏览器可以). 第一步对比wirshark截包看HTTP请求头,发现我这缺失一部分请求头. 对着官方文档添加即可.https://msdn.microsof ...

  6. MVC HTML辅助类常用方法记录

    (1)@Html.DisplayNameFor(model => model.Title)是显示列名, (2)@Html.DisplayFor(modelItem => item.Titl ...

  7. 在使用 HttpWebRequest Post数据时候返回 400错误

    笔者有一个项目中用到了上传zip并解压的功能.开始觉得很简单,因为之前曾经做过之类的上传文件的功能,所以并不为意,于是使用copy大法.正如你所料,如果一切很正常的能运行的话就不会有这篇笔记了. 整个 ...

  8. HttpWebRequest的GetResponse或GetRequestStream偶尔超时 + 总结各种超时死掉的可能和相应的解决办法

    [问题] 用C#模拟网页登陆,其中去请求几个页面,会发起对应的http的请求request,其中keepAlive设置为true,提交请求后,然后会有对应的response: resp = (Http ...

  9. CozyRSS开发记录7-了解RSS

    CozyRSS开发记录7-了解RSS 1.初窥RSS 多找几个RSS源就会发现,有的源是用Atom协议提供的,有的源是RSS协议提供的.RSS协议有过几个版本,0.9.1.0和2.0等,理论上支持2. ...

随机推荐

  1. Android 设置代理(验证用户名和密码)

    这几天在研究在Android中,解析网页,但是公司内容,链接外网需要代理,并需要验证用户名和密码,十分头疼,网上查了下,没有头绪,最后总算在一个外国博客中看到类似的,记录下 URL url = new ...

  2. 用keras的cnn做人脸分类

    keras介绍 Keras是一个简约,高度模块化的神经网络库.采用Python / Theano开发. 使用Keras如果你需要一个深度学习库: 可以很容易和快速实现原型(通过总模块化,极简主义,和可 ...

  3. js中设置元素class的三种方法小结

     一.el.setAttribute('class','abc'); 代码如下: .abc { background: red; } test div var div = document.getEl ...

  4. interactivePopGestureRecognizer

    苹果一直都在人机交互中尽力做到极致,在iOS7中,新增加了一个小小的功能,也就是这个api:self.navigationController.interactivePopGestureRecogni ...

  5. Linux SVN 命令详解(zz)

    Linux下常用SVN命令 2012-04-02 11:46:00 标签:服务器 目录 Linux checkout linux系统 1.将文件checkout到本地目录 svn checkout p ...

  6. vs

    https://www.visualstudio.com/downloads/download-visual-studio-vs

  7. Spring+struts2的基础上继续加hibernate3的jar包

  8. nio 弊端

    java-nio在Android上使用的种种弊端 August 12, 2013programming 我们知道,手机上的网络一般会比较慢(使用wifi除外),用户非常不希望自己在使用手机时被考验耐心 ...

  9. 【温故Delphi】GAEA用到Win32 API目录

    Delphi是Windows平台下著名的快速应用程序开发工具,它在VCL中封装并使用了大量的Win32 API. GAEA基于VCL开发的工具类产品,在程序中使用了大量的Win32 API,将经常用到 ...

  10. liunx 字符编码问题

    查询当前服务器的编码:echo $LANG 设置服务器的编码:LANG=en_US.UTF-8