Linux curl测试服务器接口请求
一、背景
获取公众号token接口:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
为向小程序推送公众号消息,需先调用微信接口获取公众号token,而调用该接口需要添加IP白名单,所以这里需要一种方式来获取调用接口所在服务器的外网IP地址(由于网管外出而且缺少关键日志,也不清楚接口在linux服务器上调用产生了什么异常,这里再改代码重新部署比较麻烦,所以直接通过服务器发起接口请求追查原因)。
二、方案
使用curl函数请求接口,通过返回数据判断问题原因。
三、测试
#第一次调用,curl+URL无法携带参数,为GET请求 [root@localhost ~]# curl https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET [root@localhost ~]# {"errcode":41002,"errmsg":"appid missing rid: 64ae6747-43a71e2c-4c9520a5"} #第二次调用,使用POST请求,发现服务器外网IP地址不在公众号IP白名单内 [root@localhost ~]# curl -d "grant_type=client_credential&appid=APPID&secret=APPSECRET" https://api.weixin.qq.com/cgi-bin/token [root@localhost ~]# {"errcode":10164,"errmsg":"invalid ip 123.88.456.789 ipv6 ::ffff:123.88.456.789,not in whitelist rid:64ae2227-7f0c08c4-1b1c491d"} #第三次调用,使用POST请求并添加外网IP到公众号IP白名单,接口可以正常获取token [root@localhost ~]# curl -d "grant_type=client_credential&appid=APPID&secret=APPSECRET" https://api.weixin.qq.com/cgi-bin/token [root@localhost ~]# {"access_token":"66_u66MuIummMEaCAQmaYgov6MpWYM6GWn6FfEX6HbAZxEHXoeEmxb6ZjrSqhIcOw66YF6-uEetwgGLXy6pXhbfPbnHuNo6c6ZpxirAKsX6Rj66PCSTSgAyCiWC6PAOPCjAFAGHU","express_in":"7200"}
雨淋淋过的季节