微信 php post json,微信企业号:如何POST JSON数据发送消息给企业号成员
根据企业号开发者文档的发送消息接口消息数据格式,要想向企业号成员发送消息必须用POST方式将JSON数据发送到指定的包含ACCESS_TOKEN的URL。
我想实现的是每隔一段时间间隔,查询数据库之后根据查询结果向特定成员发送消息。
我在自己的linux服务器的shell上通过编写curl命令已经可以成功地POST JSON数据,我自己的手机上也接到了信息,说明我对文档的理解和数据格式没有问题。但是这种方式必须把获取到的ACCESS_TOKEN HARD CODE到命令行中,而且TOKEN是有时限的,所以只能用来测试,不能用于生产环境中。
在生产环境中,我想的解决方案还是编写PHP/JAVASCRIPT程序来发送消息,然后在服务器端用CRON JOB来定时执行该PHP程序。但是由于对POST原理理解的不够到位,具体实现过程中碰到许多问题。
首先,如果只考虑可行性的话,能否用jQuery的ajax方法来实现呢?
在我的实验中,我先用PHP获取了正确的TOKEN,构建了URL,然后将URL值传递给了javascript 变量url,在console中尝试
$.ajax({
type: "POST",
url: url,
data: '{"touser":"Jacklyn","msgtype":"text","agentid":23,"text":{"content":"test message"}}',
success: function(){},
dataType: "json",
contentType : "application/json"
});
console返回了一个cross domain的错误,我理解因为cross domain的问题,我没法看到返回成功或失败的信息
但我的手机上也没有收到任何消息,所以发送应该是失败了。为了查看以上代码究竟发送了什么数据,我用另外一个文件来接收数据:
echo '
';
var_dump($_POST);
echo "
";
?>
但是在$.ajax返回的对象.responsText里可以看到POST的结果是
array(0) {}
如果我把AJAX方法中的datetype和contenttype去掉,在responseText中就能看到正确的数据。所以,第一个问题是,如果$.ajax发送的JSON格式的数据不能被$_POST接收到,在服务器端应如何读取发送的数据呢?
此外,我读了一些关于POST的文档,如果没有理解错的话,实际上POST传递的信息由两部分组成,一是HEADER,一是DATA;我也搜寻了一些关于如何通过PHP POST JSON数据的文章,读的不是很懂,似乎大部分文章都是说要先对HEADER进行一定程度的控制,然后才能POST JSON,这是不是意味着用javascript就无法实现呢?
最后,我用以下函数
function gotoUrl(path, params, method) {
//Null check
method = method || "post"; // Set method to post by default if not specified.
// The rest of this code assumes you are not using a library.
// It can be made less wordy if you use one.
var form = document.createElement("form");
form.setAttribute("method", method);
form.setAttribute("action", path);
//Fill the hidden form
if (typeof params === 'string') {
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", 'data');
hiddenField.setAttribute("value", params);
form.appendChild(hiddenField);
}
else {
for (var key in params) {
if (params.hasOwnProperty(key)) {
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", key);
if(typeof params[key] === 'object'){
hiddenField.setAttribute("value", JSON.stringify(params[key]));
}
else{
hiddenField.setAttribute("value", params[key]);
}
form.appendChild(hiddenField);
}
}
}
document.body.appendChild(form);
form.submit();
}
模拟一个表单提交数据,然后我尝试
gotoUrl(url,'{"touser":"shenkwen","msgtype":"text","agentid":23,"text":{"content":"test message"}}')
给url加上一个debug=1参数的话,可以看到postdata,以上代码的postdata是这样的:
data=%7B%22touser%22%3A%22shenkwen%22%2C%22msgtype%22%3A%22text%22%2C%22agentid%22%3A23%2C%22text%22%3A%7B%22content%22%3A%22test+message%22%7D%7D
看起来是把json字符串urlencode了,这是不是意味着在这个场合中所要求的json数据根本无法用表单方式提交?
微信 php post json,微信企业号:如何POST JSON数据发送消息给企业号成员相关推荐
- php 公众号指定人发消息,微信公众号客服接口给指定用户openid发送消息
微信公众号客服接口给指定用户openid发送消息 2018-09-23 微信开发文档: 客服接口-发消息 接口调用请求说明 http请求方式: POSThttps://api.weixin.qq.co ...
- 微信公众号客服接口给指定用户openid发送消息
微信开发文档: 客服接口-发消息 接口调用请求说明 http请求方式: POST https://api.weixin.qq.com/cgi-bin/message/custom/send?acces ...
- 微信公众号利用客服接口主动给用户发送消息的方法
目前微信并没有放出主动给用户发送消息的接口,但是我们可以使用其多客服接口来达到主动给用户发送消息的目的. 当用户和公众号产生特定动作的交互时(具体动作列表请见下方说明),微信将会把消息数据推送给开发者 ...
- 微信公众平台 发送消息-群发接口
前言:最近做微信开发,弄了一个群发接口,本着不记录肯定会忘记的本事,在这里整理一下.多学习多进步.本文比较啰嗦,可以查看参考文章,我就是从那位大神那里学习到的.本片文章基于Spring开发,Sprin ...
- zabbix之微信告警(python版):微信个人报警,微信企业号告警脚本
微信个人告警脚本 微信个人告警:使用个人微信,发送到微信群组,微信好友 两个脚本执行: 1)能连接网络 2)先执行server.py,扫描登录微信,登录之后没有报错,打开新终端查看端口是否起来了 3) ...
- 微信企业号开发(6)--发送消息
[本文所描述的内容具有一定的时效性,请以实际开发所处环境为准] 今天我们介绍我们日常使用最频繁的发送消息功能,在企业号中,由于移除了诸多的限制,消息的发送量几乎没有限制.但是,在此,特别提醒大家,千万 ...
- 微信企业号开发:主动发送消息
主企业号主动发送消息,也就是企业号主动推送的消息,适合于企业的通知,通告等.因此如果公司有通知,要求通知到所有员工,就应该使用主动发送消息. 格式是json格式,而且微信很灵活,当touser,top ...
- php微信 发送信息,PHP微信企业号主动给用户发送消息接口代码
php微信企业号主动给用户发送消息接口代码 $corpid = "wx690e2a9380e2440dyt"; $secrect = "3g9l6dHy8qjYqYMWX ...
- java企业微信发送语言_java微信企业号开发之发送消息(文本、图片、语音)
上篇文章介绍了开启回调模式,开始回调模式后我们就要实现聊天功能了.平时使用微信聊天可以发送文本消息.语音.图片.视频等,这里只实现了其中的一些功能和大家分享. 一.与微信企业号建立连接1.企业应用调用 ...
最新文章
- LeetCode简单题之七进制数
- 西安python工资怎么样-python西安薪资
- Chipseq数据库的建立
- Linux进程和计划任务管理
- STM32产品名称命名规则
- JavaScript异步
- 【kali】kali环境下安装dvwa
- c语言编写指针函数求和与两数交换值
- android 控件颜色随焦点变化实例
- Excel工作表保护在哪里撤销?
- LTE网络架构和协议栈
- mi5splus android9,小米5SPlus lineage16 安卓9.0 极致省电 纯净 完美root Xposed 经典版
- Insyde uefi 隐藏设置_联想台式机10代cpu装win10及bios设置教程(新bios设置)
- 电商自营藏猫腻 苏宁国美京东的套路谁最深?
- 免费高清图片素材网站
- 2017-2018-1 《程序设计与数据结构》课程总结
- Choerodon猪齿鱼实践之开发应用服务
- 面向金融场景的 Vue.js 移动端组件库 mand-mobile
- 识别INSB号码C语言如何讲述,探究机器码,深入研究C语言程序的机制
- 云出阿里见月明(上)
热门文章
- linux查看是否有用户在使用分区,在Linux服务器中有几种查看分区表的方法
- python文本分类评价指标 top1如何计算_python – Keras:如何计算多标签分类的准确......
- 风格化图像_【技术综述】人脸风格化核心技术与数据集总结
- c语言实验设计报告,C语言实验设计报告.doc
- 常考的 21 条 Linux 命令
- 皮一皮:夏天来了,蚊子叫了...
- 每日一皮:这个食堂好...
- 在Docker中运行Spring Boot的高级功能测试
- 每秒上万并发下的Spring Cloud参数优化实战
- 监控利器之 Prometheus