微信公众号开发怎么获取微信服务器IP地址
公众号开发基于接口安全等考虑,需要获知微信服务器的IP地址列表,以便应对被有心人恶意调用的情况,由于出口IP及入口IP可能存在变动,微信公众号官方是建议每天请求接口1次主动更新IP池。
接口文档地址:
https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_the_WeChat_server_IP_address.html#
接着上一篇:微信公众平台C#开发系列(四):获取access token凭证
部分使用类方法详情 请参考上述链接 ,本文不再重复赘述
获取微信API接口 IP地址
根据文档我们先定义一个WeixinIpPoolResponse类继承 ErrorMessage 用于解析接口结果
ErrorMessage 公共类参考 : 微信公众平台C#开发系列(四):获取access token凭证
namespace YuanTK.WeiXin.Wrapper { ////// 微信服务器ip池接口返回值 /// public class WeixinIpPoolResponse : ErrorMessage { /// /// 微信服务器IP地址列表 /// public string[] ip_list { get; set; } } }
定义一个WeixinIpPool 方法类继承WeiXinRequest 和接口IWeiXin
namespace YuanTK.WeiXin { ////// 微信服务器ip池 /// public class WeixinIpPool : WeiXinRequest , IWeiXin { /// /// 调取的ip池接口类型 /// public enum Pool { /// /// API接口IP:即api.weixin.qq.com的解析地址,由开发者调用微信侧的接入IP。 /// get_api_domain_ip, /// /// callback IP:即微信调用开发者服务器所使用的出口IP。 /// getcallbackip } /// /// 接口地址 /// String api; public WeixinIpPool(Pool pool, string access_token) { ///初始化接口地址 api = $"https://api.weixin.qq.com/cgi-bin/{pool.ToString()}?access_token={access_token}"; } /// /// 调用接口获取结果 /// /// public WeixinIpPoolResponse GetResponse() { return this.Get(api); } } }
调用例子
//通信凭证 参考本文开头链接《微信公众平台C#开发系列(四):获取access token凭证》 string access_token = token.access_token; IWeiXinapi = new WeixinIpPool(WeixinIpPool.Pool.get_api_domain_ip, access_token); //IWeiXin api = new WeixinIpPool(WeixinIpPool.Pool.getcallbackip, access_token); WeixinIpPoolResponse weixinIp= api.GetResponse();
运行请求成功的效果