记录HttpWebRequest辅助类
最近因为工作关系,需要通过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辅助类的更多相关文章
- 『备忘』HttpWebRequest 在 POST 提交时, 标头(Headers)丢失原因
近来研究 HttpWebRequest —— 辅助类完成时,POST JSON数据 总会 丢失标头(Headers). HttpWebRequest POST JSON数据,分如下几步: > 将 ...
- 负载,性能测试工具-Gatling
前言 Gatling Gatling是一款功能强大的负载测试工具,它为易于使用,高可维护性和高性能而设计. 开箱即用,Gatling由于对HTTP协议的出色支持,使其成为负载测试任何HTTP服务器的首 ...
- 记录一次排查使用HttpWebRequest发送请求的发生“基础连接已关闭:接收时发生错误”异常问题的过程
描述:某次更新程序,需要给测试员MM测试,之前都是正常的,更新后给MM测试就报异常System.Net.WebException 基础连接已经关闭:接收时发生错误 -------> System ...
- httpwebrequest 模拟登录 获取cookies 以前的代码,记录备忘!
2个类,一个基类,一个构建头信息调用类 关于如何获取到post中的内容,你之需要用http抓包工具把你与目标网站的请求信息抓下来后,打开分析下按照抓下来的包中的数 据进行构建就行了 using Sys ...
- HttpWebRequest请求http1.1的chunked的解析问题记录
问题:我的请求获取不到URL对应的内容(换个浏览器可以). 第一步对比wirshark截包看HTTP请求头,发现我这缺失一部分请求头. 对着官方文档添加即可.https://msdn.microsof ...
- MVC HTML辅助类常用方法记录
(1)@Html.DisplayNameFor(model => model.Title)是显示列名, (2)@Html.DisplayFor(modelItem => item.Titl ...
- 在使用 HttpWebRequest Post数据时候返回 400错误
笔者有一个项目中用到了上传zip并解压的功能.开始觉得很简单,因为之前曾经做过之类的上传文件的功能,所以并不为意,于是使用copy大法.正如你所料,如果一切很正常的能运行的话就不会有这篇笔记了. 整个 ...
- HttpWebRequest的GetResponse或GetRequestStream偶尔超时 + 总结各种超时死掉的可能和相应的解决办法
[问题] 用C#模拟网页登陆,其中去请求几个页面,会发起对应的http的请求request,其中keepAlive设置为true,提交请求后,然后会有对应的response: resp = (Http ...
- CozyRSS开发记录7-了解RSS
CozyRSS开发记录7-了解RSS 1.初窥RSS 多找几个RSS源就会发现,有的源是用Atom协议提供的,有的源是RSS协议提供的.RSS协议有过几个版本,0.9.1.0和2.0等,理论上支持2. ...
随机推荐
- [Arduino] Arduino猪头笔记
1. 步进电机驱动 今天才发现....原来在不同的步进电机驱动模块里面,循环时钟是不一样的.... 步进电机驱动模块以及电路配置: 驱动代码的主要部分: int sp_param = 16383; d ...
- SQL Server 2008 r2 中 SQL语句提示“对象名无效”,但可执行
[问题描述]在使用 SQL Server 2008 r2 时,有时在完成SQL书写后,会提示“对象名无效”,而SQL语句可正常执行. [原因]缓存相关. [解决方法]ctrl+shift+R 刷新下, ...
- 我利用网上特效开发的Jquery插件
我利用网上特效开发的Jquery插件 代码如下 (function($){ $.fn.Dialogx = function(options) { var defaults={ Width:" ...
- Linux命令小结:crontab/netstat/iostat/sar
crontab cron可以设定在指定的时间运行任务. 1.查看定时任务 [root@client1 ~]# crontab -l -u root */1 * * * * date >> ...
- 搭建高可用mongodb集群(三)—— 深入副本集内部机制
在上一篇文章<搭建高可用mongodb集群(二)—— 副本集> 介绍了副本集的配置,这篇文章深入研究一下副本集的内部机制.还是带着副本集的问题来看吧! 副本集故障转移,主节点是如何选举的? ...
- javascript语言精粹摘要
JavaScript中五种基本类型:string,number,boolean,null,undefined.还有一个对象类型object. javascript只有一个数字类型.它在内部被表示为64 ...
- java中获取路径的几种方式
总是忘记, 备份一下,方便下次用. 第一种: File directory = new File("");//参数为空 String courseFile = directory. ...
- Groovy 处理 XML
1. Parsing XML 1.1. XmlParser and XmlSlurper The most commonly used approach for parsing XML with Gr ...
- shell学习--grep1
一. grep的来源 通过ex编辑器来查找某个字串: :/pattern/p 其中p是打印,包含字符串pattern的第一行将被打印:如果需要打印包含pattern的所有行,可以这样: :/g/pat ...
- js库收集
------图表 中文 http://www.highcharts.me/ 英文 http://www.highcharts.com/ ------web前端开发框架 中文 http://www.bo ...