微信开发之Post请求的示例分析
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇文章给大家分享的是有关微信开发之Post请求的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.post请求wx.request(OBJECT)wx.reque
千家信息网最后更新 2025年01月31日微信开发之Post请求的示例分析
这篇文章给大家分享的是有关微信开发之Post请求的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
1.post请求
wx.request(OBJECT)
wx.request
发起的是 HTTPS 请求。一个微信小程序,同时只能有5个网络请求连接。
官网上描述
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
url | String | 是 | 开发者服务器接口地址 |
data | Object、String | 否 | 请求的参数 |
header | Object | 否 | 设置请求的 header , header 中不能设置 Referer |
method | String | 否 | 默认为 GET,有效值:OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT |
success | Function | 否 | 收到开发者服务成功返回的回调函数,res = {data: '开发者服务器返回的内容'} |
fail | Function | 否 | 接口调用失败的回调函数 |
complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
微信小程序示例
wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '' , y: '' }, header: { 'content-type': 'application/json' }, success: function(res) { console.log(res.data) }})
这种请求GET方式是ok的,header头也可以不用添加。
但是POST就有比较大的问题了。
我使用以下代码进行调试(代码一):
wx.request({ url: ApiHost + '/?service=default.getOrderInfo', data: { 'order_id': order_id }, method: 'POST', success: function (res) { // console.log(res); if (res.data.ret == 200) { //something to do } else{ //something to do } } fail: function (res) { console.log(res); } });
注意看下图,微信开发工具里面的提示:
POST 请求会将data的值放在Request Payload里面,而不是Query String Parameters里面,后端服务器如果不注意,就无法取到数据。
网上很多改法,是这样的。----加上header头
wx.request({ url: ApiHost + '/?service=default.getOrderInfo', data: { //数据urlencode方式编码,变量间用&连接,再post 'order_id='+order_id }, method: 'POST', header:{ 'content-type':'application/x-www-form-urlencoded' }, success: function (res) { // console.log(res); if (res.data.ret == 200) { //something to do } else{ //something to do } } fail: function (res) { console.log(res); } });
这样修改的话,后端可以不用特别处理。
但是............
因为还是想用标准的方法做,那只有修改后端服务器啦。
我这边使用的是Phalapi框架,推荐下~~~
if(DI()->request->getHeader('content-type')){ $contentType = DI()->request->getHeader('content-type');}if(!empty($contentType)&&(strtolower(@$contentType) === 'application/json')){ $HTTP_RAW_POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : "{}"; DI()->request = new PhalApi_Request(array_merge($_GET,json_decode($HTTP_RAW_POST_DATA, true)));}
终于,在pc上用代码一调试通过。用上标准请求,也不用application/x-www-form-urlencoded这种模式。
不过.....用上真机调试,怎么又接收不到请求参数了。怪事。。。。。。。。。
最后通过抓包分析
真机端
POST /?service=default.getOrderInfo HTTP/1.0Host: proxyConnection: closeContent-Length: 43Content-Type: application/jsonAccept-Encoding: gzip, deflateAccept: */*User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_5 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13G36 MicroMessenger/6.5.1 NetType/WIFI Language/zh_CNReferer: https://servicewechat.com/###/0/page-frame.htmlAccept-Language: zh-cn{"order_id":"011T00wO0gZVR72P89tO0DFNvO0T00w0"}
pc模拟开发端
POST /?service=default.getOrderInfo HTTP/1.0Host: proxyConnection: closeContent-Length: 43Origin: http://###.appservice.open.weixin.qq.comX-Requested-With: XMLHttpRequestUser-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 appservice webview/100000content-type: application/jsonAccept: */*Referer: https://servicewechat.com/####/devtools/page-frame.htmlAccept-Encoding: gzip, deflate, br{"order_id":"011T00wO0gZVR72P89tO0DFNvO0T00w0"}
最后找到区别:
Content-Type 与 content-type
模拟器默认是content-type
真机默认是Content-Type
后端服务器增加处理Content-Type 就搞定了。
感谢各位的阅读!关于"微信开发之Post请求的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
开发
服务
服务器
示例
接口
分析
不用
代码
内容
函数
参数
开发者
成功
地址
数据
方式
更多
标准
程序
篇文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
iphone激活服务器暂时不可用
网络安全论文1500字英文版
互联网科技的生活习惯
软件开发项目技术要求书
软件开发流程实训总结
山西水性软件开发发展现状
魔兽怀旧服灵风服务器介绍
软件开发工作管理
惠普服务器磁盘设置
极光数据库简介
海曙专业软件开发项目管理
高校有关网络安全课程
国信网络安全产业
才正软件开发有限公司
网络安全学习网址
昆明软件开发排行
哈利波特蛇院哪个服务器
底栖生物数据库
鸿蒙有没有自己的服务器
执法局网络安全落实情况报告
软件开发及服务发票样板
常州机电软件开发技术参数
怎么控制vb数据库
酒店无线网络安全研究
浪潮服务器的优缺点
网络安全教育视频拍摄
青少年网络安全法规定
服务器有录屏软件
php 链接数据库 乱码
大连慧晨网络技术信息