主机参考:VPS测评参考推荐/专注分享VPS服务器优惠信息!若您是商家可以在本站进行投稿,查看详情!此外我们还提供软文收录、PayPal代付、广告赞助等服务,查看详情! |
我们发布的部分优惠活动文章可能存在时效性,购买时建议在本站搜索商家名称可查看相关文章充分了解该商家!若非中文页面可使用Edge浏览器同步翻译!PayPal代付/收录合作 |
1.post请求wx.request(object)wx.request发起了一个https请求。一个微信小程序,同时只能请求连接五个网络。官网描述
参数名称类型必需说明urlString是开发者服务器dataObject的接口地址,String没有请求的参数headerObject不能设置没有请求的头,ReferermethodString不能在头中设置No default是GET,有效值:OPTIONS,GET,HEAD,POST,Put,delete,trace,connectsuccessfunction是否收到开发者服务成功返回的回调函数,res = {data:'开发者服务器返回的内容' }failFunction没有接口调用失败的回调函数completeFunction没有接口调用结束的回调函数(成功和失败的调用都将执行)微信小程序示例
wx . request({ URL:& amp;#39;& amp#39;,//只是一个例子,不是真实的接口地址数据:{ x:&;#39;& amp#39;,y:& amp;#39;& amp#39;},表头:{ & amp#39;内容-类型& amp#39;:& amp#39;应用程序/JSON & amp;#39;},success:function(RES){ console . log(RES . data)})这个request GET方法是可以的,header头可以不加。但是波斯特有一个更大的问题。
我使用下面的代码进行调试(代码1):
wx . request({ URL:API host+& amp;#39;/?service=default.getOrderInfo。#39;,数据:{ & amp#39;订单id & amp#39;:order_id },方法:& amp#39;邮政和邮政。#39;,success:function(RES){//console . log(RES);if(RES . data . ret = = 200){//something to do } else {//something to do } } fail:function(RES){ console . log(RES);} });注意下图,微信开发工具里的提示:
2016-12-21_111056.png
POST请求将把数据值而不是查询字符串参数放入请求有效负载中。如果后端服务器不小心,就无法获取数据。网上改了很多,就是这样。----加表头表头
wx . request({ URL:API host+& amp;#39;/?service=default.getOrderInfo。#39;,数据:{//数据用urlencode的方式编码,变量用&编码;连接,然后发布&;#39;订单id = & amp#39;+order_id },方法:& amp#39;邮政和邮政。#39;,表头:{ & amp#39;内容-类型& amp#39;:& amp#39;应用程序/x-www-form -urlencoded & amp;#39;},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()-& gt;请求->get header(& amp;#39;内容-类型& amp#39;)){ $ content type = DI()-& gt;请求->get header(& amp;#39;内容-类型& amp#39;);}如果(!empty($ content type)& amp;& amp(strtolower(@ $ content type)= = = & amp;#39;应用程序/JSON & amp;#39;)){ $ HTTP _ RAW _ POST _ DATA = isset($ GLOBALS[& amp;#39;原始数据。#39;]) ?$ GLOBALS[& amp;#39;原始数据。#39;]:& quot;{ } & quot;DI()-& gt;Request = new PhalApi _ Request(array _ merge($ _ GET,JSON _ decode($ HTTP _ RAW _ POST _ DATA,true)));}最后在pc上用code one调试通过。使用标准请求,而不是应用程序/x-www-form-urlencoded的模式。
但是.....有了真机调试,怎么可能收不到请求的参数?奇怪的事情。。。。。。。。。最后,通过对包的把握分析
真实机器端
POST /?service = default . getorderinfo HTTP/1.0 host:proxy connection:close content -Length:43 content -Type:application/JSON accept -Encoding:gzip,通缩accept:*/* user -Agent:Mozilla/5.0(iPhone;CPU iPhone OS 9_3_5像Mac OS X)apple WebKit/601 . 1 . 46(KHTML像Gecko)Mobile/13g 36 micro messenger/6 . 5 . 1 NetType/WIFI Language/zh _ cn referer:https://service we chat . com/# # #/0/page -frame . html accept -Language:zh H-cn { & quot;订单id & quot:& quot011t 00 wo 0 gzvr 72 p 89 to 0 dfn VO 0t 00 w 0 & quot;}pc模拟开发结束
POST /?service = default . getorderinfo HTTP/1.0 host:proxy connection:close content -Length:43 origin:HTTP://# # # . app service . open . weixin . QQ . comx -requested -With:xmlhttprequestuser -Agent:Mozilla/5.0(Windows NT 6.3;WOW64) AppleWebKit/537.36 (KHTML,像壁虎一样)Chrome/53 . 0 . 2785 . 143 Safari/537.36 appservice webview/100000 content -类型:application/JSON accept:*/* Referer:https://servicewechat.com/ # # # #/devtools/page -frame . html accept -编码:gzip,deflate,br { & quot订单id & quot:& quot011t 00 wo 0 gzvr 72 p 89 to 0 dfn VO 0t 00 w 0 & quot;}最后我发现了区别:content -型和content -型模拟器默认是content -型,真机默认是content -型,后端服务器可以添加content -型来处理。
[相关建议]
1.下载微信微信官方账号平台源代码。
2.PigCMS (PigCMS)微电商系统运营版(独立微店商城+三级分销系统)
3.微信网王v3.4.5高级商业版微信魔方源代码
这几篇文章你可能也喜欢:
- 暂无相关推荐文章
本文由主机参考刊发,转载请注明:微信开发跳坑的帖子请求(微信开发界面) https://zhujicankao.com/114156.html
评论前必须登录!
注册