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 支付宝扫码登陆
随机推荐
- 用html自己开发自己的串口TCP通讯调试软件
今天给大家介绍一个通讯工具,可以自己写html页面,自己写Js脚本实现数据收发. 本程序在不断完善中,请大家不要喷,多多理解,有意见只管提. 系列文章 概述 串口基础功能 TCP客户端收发 参数篇 串 ...
- 1109 Group Photo (25分)
Formation is very important when taking a group photo. Given the rules of forming K rows with N peop ...
- node运行的第一个helloWorld程序
hello world 参考链接: https://www.runoob.com/nodejs/nodejs-http-server.html https://npm.taobao.org/ http ...
- 病毒木马查杀实战第013篇:一个基于.NET的“敲竹杠”病毒研究
前言 恶意程序发展至今,其功能已经从最初的单纯破坏,不断发展为隐私的窥探,信息的盗取,乃至如今非常流行的"敲竹杠"病毒,用于勒索.可见随着时代的发展,病毒的作者们往往也是想利用自己 ...
- 【微信小程序】--小程序中循环遍历(包括js中遍历和wxml中的遍历)
文章为博主原创,纯属个人见解,如有错误欢迎指出. 如需转载,请注明出处. 在js中遍历 for (var index in res.data.infos) { res.data.infos[index ...
- Linux下查看在线用户及用户进程
#该服务器下的所有用户运行进程的情况 ps -ax -u #查看java程序下用户的进程情况 ps -ax -u |grep java 或 ps aux|grep java cat /etc/p ...
- mysql.data.entityframeworkcore 已弃用
转官网有方案: https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework-core.html General R ...
- [源码解析] 并行分布式框架 Celery 之 容错机制
[源码解析] 并行分布式框架 Celery 之 容错机制 目录 [源码解析] 并行分布式框架 Celery 之 容错机制 0x00 摘要 0x01 概述 1.1 错误种类 1.2 失败维度 1.3 应 ...
- 【技术博客】使用iview的Tree组件写一棵文件树
本次项目的前端部分使用vue框架+iview组件构建,其中IDE的文件树部分使用了iview的Tree组件,但是Tree组件本身的接口功能极其有限,网上的相关资料也不多,在使用时费了一番功夫才摸索清楚 ...
- 并查集板子+kruskal
最近在学最小生成树得时候又用到了并查集,一起来整理一下 1.并查集 并查集就是字面意思,将两个单独得集合合并成一个大的集合. 并查集关键在于两个操作:合并和查找 先要完成查找操作(合并操作在查找的基础 ...