C# HTTP请求对外接口、第三方接口公用类
/// <summary>
/// 网络数据请求公共函数
/// </summary>
public class HttpWebRequestCommon
{ #region 根据HTTP协议请求接口,不携带参数
/// <summary>
/// 根据HTTP协议请求接口,不携带参数
/// </summary>
/// <param name="url">请求的第三方接口地址</param>
/// <returns>接口返回的数据</returns>
public static string HttpRequest(string url)
{
//string returnData = null;
string ret = string.Empty;
try
{
HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(url);
webReq.Method = "POST";
webReq.ContentType = "application/json";
Stream postData = webReq.GetRequestStream();
postData.Close();
HttpWebResponse webResp = (HttpWebResponse)webReq.GetResponse();
StreamReader sr = new StreamReader(webResp.GetResponseStream(), Encoding.UTF8);
ret = sr.ReadToEnd();
}
catch (Exception ex)
{
//LogManager.LogInstance.WriteLog("时间:" + DateTime.Now + "/n 请求出错原因" + ex.ToString());
}
return ret;
}
#endregion #region 根据HTTP协议请求第三方接口数据,携带参数方式在地址后使用占位符拼接参数。传递格式请参照下个函数
/// <summary>
/// 根据HTTP协议请求第三方接口数据,携带参数方式在地址后使用占位符拼接参数
/// </summary>
/// <param name="PostUrl">请求的第三方地址</param>
/// <param name="postData">在地址后拼接的参数集合,传递格式请参照调用示范</param>
/// <returns>接口返回的数据格式</returns>
public static string HttpRequestUrl(string PostUrl, byte[] postData)
{
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(PostUrl);
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = postData.Length; Stream newStream = myRequest.GetRequestStream();
// Send the data.
newStream.Write(postData, 0, postData.Length);
newStream.Flush();
newStream.Close();
string msg = string.Empty;
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
if (myResponse.StatusCode == HttpStatusCode.OK)
{
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); msg = reader.ReadToEnd();
}
return msg;
}
#endregion #region 根据HTTP协议请求第三方接口数据,携带参数方式在地址后使用占位符拼接参数。传递格式请参照下个函数
/// <summary>
/// 根据HTTP协议请求第三方接口数据,携带参数方式在地址后使用占位符拼接参数
/// </summary>
/// <param name="PostUrl">请求的第三方地址</param>
/// <param name="postData">在地址后拼接的参数集合,传递格式请参照调用示范</param>
/// <returns>接口返回的数据格式</returns>
public static string HttpRequestUrl(string PostUrl, byte[] postData, string POSTisGET)
{
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(PostUrl);
myRequest.Method = POSTisGET;
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = postData.Length; Stream newStream = myRequest.GetRequestStream();
// Send the data.
newStream.Write(postData, 0, postData.Length);
newStream.Flush();
newStream.Close();
string msg = string.Empty;
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
if (myResponse.StatusCode == HttpStatusCode.OK)
{
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); msg = reader.ReadToEnd();
}
return msg;
}
#endregion #region 上面HttpRequestUrl函数的调用示范,url存请求地址。参数通过字符串占位符拼接
//string url = "https://api.weixin.qq.com/cgi-bin/token"; //string postStrTpl = "grant_type=client_credential&appid={0}&secret={1}"; //UTF8Encoding encoding = new UTF8Encoding();
//byte[] postData = encoding.GetBytes(string.Format(postStrTpl, "参数一", "参数二")); //string retString = HttpWebRequestCommon.RequestUrl(url, postData);
#endregion #region 根据HTTP协议请求第三方接口,携带XML参数
/// <summary>
/// 根据HTTP协议请求第三方接口,携带XML参数
/// </summary>
/// <param name="url">请求地址</param>
/// <param name="data">携带的XML数据</param>
/// <returns>接口返回的数据</returns>
public static string HttpRequestXml(string url, string data)
{
//string returnData = null;
string ret = string.Empty;
try
{
byte[] buffer = Encoding.GetEncoding("UTF-8").GetBytes(data);
HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(url);
webReq.Method = "POST";
webReq.ContentType = "application/x-www-form-urlencoded";
webReq.ContentLength = buffer.Length;
Stream postData = webReq.GetRequestStream();
postData.Write(buffer, 0, buffer.Length);
postData.Close();
HttpWebResponse webResp = (HttpWebResponse)webReq.GetResponse();
StreamReader sr = new StreamReader(webResp.GetResponseStream(), Encoding.UTF8);
ret = sr.ReadToEnd();
}
catch (Exception ex)
{
//LogManager.LogInstance.WriteLog("时间:" + DateTime.Now + "/n 请求出错原因" + ex.ToString());
}
return ret;
}
#endregion #region 根据HTTP协议请求第三方接口,携带Json参数
/// <summary>
/// 根据HTTP协议请求第三方接口,携带Json参数。
/// </summary>
/// <param name="url">请求的第三方地址</param>
/// <param name="content">Post提交数据内容(utf-8编码的)</param>
/// <returns>接口返回的数据</returns>
public static string HttpRequestJson(string url, string content)
{
string result = "";
//ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, sslPolicyErrors) => true;
//ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentType = "application/json"; #region 添加Post 参数
byte[] data = Encoding.UTF8.GetBytes(content);
req.ContentLength = data.Length; using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(data, 0, data.Length);
reqStream.Close();
}
#endregion HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream stream = resp.GetResponseStream();
//获取响应内容
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
result = reader.ReadToEnd();
}
return result;
}
#endregion }
C# HTTP请求对外接口、第三方接口公用类的更多相关文章
- java代码调用第三方接口
一.利用httpclient来字符串参数(url是第三方接口,不带参数,如:http://192.168.16.200:8081/faceInfo/list,param是url后面所要带的参数) pu ...
- PHP通过XML报文格式的POST请求方式,与第三方接口交互(发送xml,获取XML,并解析xml步骤)
开发者端:发送请求,并接收结果 <?php // 下面的demo,实现的功能如下: // 1-开发者需要判断一个用户是否存在,去请求第三方接口. // 2-与第三方接口的通信,是以xml格式传送 ...
- 分别使用http,express,koa请求第三方接口
今天又再次恶补了一下http的内容,确切地说是node.js里面的http的内容,啊,百度了半天express怎么请求第三方接口,结果发现自己买的入门书籍都有这个内容.舍近求远,我真是醉了.还有百度上 ...
- VUE 使用axios请求第三方接口数据跨域问题解决
VUE是基于node.js,所以解决跨域问题,设置一下反向代理即可. 我这里要调用的第三方接口地址为 http://v.juhe.cn/toutiao/index?type=top&key=1 ...
- Java Web系统经常使用的第三方接口
1. Web Service 接口 1.1 接口方式说明和长处 在笔者的开发生涯中,当作为接口提供商给第三方提供接口时,以及作为client去调用第三方提供的接口时,大部分时候都是使用 Web Se ...
- Java Web系统常用的第三方接口
1. Web Service 接口 1.1 接口方式说明和优点 在笔者的开发生涯中,当作为接口提供商给第三方提供接口时,以及作为客户端去调用第三方提供的接口时,大部分时候都是使用 Web Se ...
- sdk开发时,对外暴露的接口封装
思考,用同步还是异步? 实质就是屏蔽一些东西,让使用者直接传参数 拿结果 而不用关心具体实现 eg.登陆接口 1.定义接口LoginCallBack,两个函数 请求成功和失败 public inter ...
- 根据ip地址从第三方接口获取详细的地理位置
最近项目某个功能需要根据ip地址从第三方接口获取详细的地理位置,从网上找了很多例子,主要接口有新浪的,淘宝的,腾讯的.试了淘宝的,如果是数量级小的还可以,如果数量级达到上十万级就速度慢了,会导致系统崩 ...
- 调用支付宝第三方接口(沙箱环境) SpringMVC+Maven
一.蚂蚁金服开放平台的操作 网址:https://open.alipay.com/platform/home.htm 支付宝扫码登陆
随机推荐
- 🍎
江湖中有一本练了就能天下无敌的葵花宝典,大家都想得到它.如果有一天葵花宝典被公开了,人人都有机会练,到底是好事还是坏事呢? 这会成为一个灾难. 因为一个人拥有时,练不练是一个人的事.大家都拥有,练不练 ...
- 03 Django web服务开发 - URL路由
Django中的APP -Django中的一个APP就是一个应用的意思 -项目可以包含多个APP(多个应用) -一个项目对应一个网站(生活服务网站) 一个APP队形网站的一个应用(二手交易,家政服务) ...
- hdu4740 不错的简单搜索
题意: 给你一个n*n的图,给你驴和老虎的初始坐标和方向,已知他们的速度相同,他们走动的时候都是走直线,如果不能走,驴往右拐,老虎往左拐,如果拐了一次还走不了就原地不动,问他们的最早相遇位置 ...
- POJ3322滚箱子游戏(不错)
题意: 讲的是一个游戏,就是在一个平面上滚动一个1*1*2的长方体的游戏,在本题里面的游戏规则是这样的: (1) 一开始给你箱子的状态,可能是横着也可能是竖着. (2) ...
- pr中打开Audition编辑剪辑?
前景 现在一般的adobe全家桶都是一键安装破解. 天翼网盘链接,下载不限速,没有账号就现注册一个即可. https://cloud.189.cn/t/UZRjuqAZ3E7r (访问码:8ago) ...
- 在局域网内知道计算机的名字查找计算机的IP
第一步 nbtstat -a 计算机名字 第二步 nbtstat -c 可以看到计算机地址
- .NET Core 服务诊断工具
前言: 前一篇文中介绍了.NET Core-全局性能诊断工具 的使用方法,那么接下来自己实现一个简单.NET Core的诊断工具. 该工具主要包括:.NET Core 程序进程信息查看.性能计数器结果 ...
- 初识ClickHouse——安装与入门
前言: 久闻 ClickHouse 大名,一直没有去详细了解.近期看了下 ClickHouse 相关文档,决定安装体验下.想了解 ClickHouse 的小伙伴可以一起跟着学习哦.本篇文章主要介绍 C ...
- 『动善时』JMeter基础 — 14、使用JMeter发送Post请求
目录 1.Post请求参数类型说明 2.用于演示的项目说明 3.发送Post请求示例 (1)测试计划内包含的元件 (2)请求参数类型为x-www-form-urlencoded 4.请求参数form- ...
- 企业更需要定制化CRM系统满足个性化需求
随着市场的发展和信息技术的进步,越来越多的企业购买CRM客户关系管理系统来帮助管理.提高效率.但哪怕处在相同行业的企业,他们对于CRM的功能需求都会有着很大的不同.因此,大部分企业都开始进行个性化定制 ...