09-微信小程序 网络请求API(实现轮播广告和简易的聊天窗口)

09-微信小程序API网络请求(实现轮播广告和简易的聊天窗口)

文章目录

  • 微信小程序API
    • 服务器域名配置注意
    • 网络相关API
      • request
        • RequestTask 请求任务对象
        • object.success 回调函数
        • object.fail 回调函数
        • 案例代码(实现轮播图)
      • WebSocket
        • 案例代码(实现简易的聊天面板)

微信小程序API

做项目的开发,一定离不开网络相关的操作,小程序做的都是客户端,客户端请求服务端做一些交互。

微信小程序提供的API的方式,通过API的方式可以调用微信提供的强大的功能,以增强小程序的功能,如:网络请 求、拍照、扫码等;详见以下官方文档。

官方文档

在这里插入图片描述

如果单纯的做一些网页,用到拍照扫描等,需要写好多代码,现在可以调用微信封装好的API来实现。下面我们看一下微信api 的这些官方文档

服务器域名配置注意

在小程序/小游戏中使用网络相关的 API 时,需要注意下列问题,请开发者提前了解。

  • 每个微信小程序需要事先设置通讯域名,小程序只可以跟指定的域名进行网络通信
  • 域名只支持 https (wx.request、wx.uploadFile、wx.downloadFile) 和 wss (wx.connectSocket) 协议;
  • 域名不能使用 IP 地址(小程序的局域网 IP 除外)或 localhost;
  • 等等详见以下官方文档标红记录

官方文档

在这里插入图片描述

网络相关API

request

发起 HTTPS 网络请求。使用前请注意阅读相关说明。

通过request对象进行网络通信操作。

说明: 每个微信小程序需要事先设置一个通讯域名,小程序只可以跟指定的域名与进行网络通信。包括普通 HTTPS 请求(wx.request)、上传文件(wx.uploadFile)、下载文件(wx.downloadFile) 和 WebSocket 通信 (vconnectSocket)

  • 用法:RequestTask wx.request(Object object)

  • 参数 Object object wx.request

属性类型默认值必填说明最低版本
urlstring开发者服务器接口地址
datastring/object/ArrayBuffer请求的参数
headerObject设置请求的 header,header 中不能设置 Referer。 content-type 默认为 application/json
timeoutnumber超时时间,单位为毫秒。默认值为 600002.10.0
methodstringGETHTTP 请求方法
dataTypestringjson返回的数据格式
responseTypestringtext响应的数据类型1.7.0
enableHttp2booleanfalse开启 http22.10.4
enableQuicbooleanfalse开启 quic2.10.4
enableCachebooleanfalse开启 cache2.10.4
enableHttpDNSbooleanfalse是否开启 HttpDNS 服务。如开启,需要同时填入 httpDNSServiceId 。 HttpDNS 用法详见 移动解析HttpDNS2.19.1
httpDNSServiceIdstringHttpDNS 服务商 Id。 HttpDNS 用法详见 移动解析HttpDNS2.19.1
enableChunkedbooleanfalse开启 transfer-encoding chunked。2.20.2
forceCellularNetworkbooleanfalsewifi下使用移动网络发送请求2.21.0
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功、失败都会执行)

RequestTask 请求任务对象

data 参数说明

最终发送给服务器的数据是 String 类型,如果传入的 data 不是 String 类型,会被转换成 String 。转换规则如下:

  • 对于 GET 方法的数据,会将数据转换成 query string(encodeURIComponent(k)=encodeURIComponent(v)&encodeURIComponent(k)=encodeURIComponent(v)...
  • 对于 POST 方法且 header['content-type']application/json 的数据,会对数据进行 JSON 序列化
  • 对于 POST 方法且 header['content-type']application/x-www-form-urlencoded 的数据,会将数据转换成 query string (encodeURIComponent(k)=encodeURIComponent(v)&encodeURIComponent(k)=encodeURIComponent(v)...)
方法描述
RequestTask.abort()中断请求任务
RequestTask.onHeadersReceived(function listener)监听 HTTP Response Header 事件。会比请求完成事件更早
RequestTask.offHeadersReceived(function listener)移除 HTTP Response Header 事件的监听函数
RequestTask.onChunkReceived(function listener)监听 Transfer-Encoding Chunk Received 事件。当接收到新的chunk时触发。
RequestTask.offChunkReceived(function listener)移除 Transfer-Encoding Chunk Received 事件的监听函数

object.method 的合法值

合法值说明
OPTIONSHTTP 请求 OPTIONS
GETHTTP 请求 GET
HEADHTTP 请求 HEAD
POSTHTTP 请求 POST
PUTHTTP 请求 PUT
DELETEHTTP 请求 DELETE
TRACEHTTP 请求 TRACE
CONNECTHTTP 请求 CONNECT

object.dataType 的合法值

合法值说明
json返回的数据为 JSON,返回后会对返回的数据进行一次 JSON.parse
其他不对返回的内容进行 JSON.parse

object.responseType 的合法值

合法值说明
text响应的数据为文本
arraybuffer响应的数据为 ArrayBuffer

object.success 回调函数

Object res

属性类型说明最低版本
datastring/Object/Arraybuffer开发者服务器返回的数据
statusCodenumber开发者服务器返回的 HTTP 状态码
headerObject开发者服务器返回的 HTTP Response Header1.2.0
cookiesArray.开发者服务器返回的 cookies,格式为字符串数组2.10.0
profileObject网络请求过程中一些调试信息,查看详细说明2.10.4
exceptionObject网络请求过程中的一些异常信息,例如httpdns重试等3.0.0

object.fail 回调函数

Object err

属性类型说明最低版本
errMsgString错误信息
errnoNumbererrno 错误码,错误码的详细说明参考 Errno错误码2.24.0

案例代码(实现轮播图)

  • 轮播广告页面代码

index.wxml

<swiper indicator-dots="true" autoplay="true" interval="3000" duration="500"><swiper-item wx:for="{{images}}"><image src="{{item.original}}" width="375" height="150" /></swiper-item>
</swiper>

循环 images 图片数据,这个数据需要在data中做设置,进入index.js中,设置images数组,默认空

  /*** 页面的初始数据* 默认设置 images 空的数组*/ 
data: {images:[] },

在写一个方法,去加载数据

  //加载广告数据loadDate() {},

在onLoad 中做加载,调用this.loadDate();方法

  /*** 生命周期函数--监听页面加载*/onLoad:function(options) {console.log("页面加载完成",options);this.loadDate();},

现在编写loadDate();方法逻辑

可以拷贝官网中的示例代码做修改

在这里插入图片描述

拷贝以上参考文档中的示例代码做如下修改

  • 首先是url修改为自己用的, 找到自己项目的url

index.js

//demo/index.js
Page({data: {images: []},loadData() {const _this = this;wx.showLoading({title: '加载中',});wx.request({url: 'http://127.0.0.1:18080/ad?type=1',success(res) {_this.setData({images: res.data.data.list});wx.hideLoading();}})},onLoad(options) {this.loadData();}
})

WebSocket

案例代码(实现简易的聊天面板)

新建一个im 文件,im文件下新建 im.wxml

全局 app.json 中配置 im 页面

{"pages":["pages/index/index","pages/logs/logs","pages/demo/index","pages/im/im"],"window":{"backgroundTextStyle":"light","navigationBarBackgroundColor": "#80ff80","navigationBarTitleText": "我的第一个微信小程序","navigationBarTextStyle":"black"},"tabBar": {"list": [{"pagePath": "pages/index/index","text":"首页"},{"pagePath": "pages/logs/logs","text":"日志"},{"pagePath": "pages/demo/index","text":"Demo"},{"pagePath": "pages/im/im","text":"IM"}]},"style": "v2","sitemapLocation": "sitemap.json"
}

将案例代码拷贝到 im.wxml

/* pages/im/im.wxml*/

<input name="url" value="ws://127.0.0.1:18081/ws/1001" bindinput="urlInput" />
<button size='mini' type="warn">断开连接</button>
<button size='mini' type="primary" bindtap="connectSocket">开启连接</button>
<textarea placeholder="输入发送内容" bindinput="msgInput"></textarea>
<button size='mini' type="primary" bindtap="sendMsg">发送</button>
<view wx:for="{{msgs}}">{{index}}: {{item}}</view>

im.wxss中调整样式

/* pages/im/im.wxss */input,textarea{border: 1px black solid;
}button,input,textarea,view{margin: 10px;
}

效果图

在这里插入图片描述

im.js 中写个connectSocket方法来创建连接

可以参考官网拷贝代码修改

在这里插入图片描述

// pages/im/index.js
Page({/*** 页面的初始数据*/data: {url: 'ws://127.0.0.1:18081/ws/1001',msgs: [],msg: ''},connectSocket() {let _this = this;let task = wx.connectSocket({url: _this.data.url});task.onMessage(function (res) {let data = JSON.parse(res.data);let msg = data.from.id + ", " + data.msg;_this.setData({msgs: [..._this.data.msgs, "接收到消息 -> " + msg]});});_this.setData({socketTask: task,msgs: [..._this.data.msgs, "连接成功!"]});},urlInput(e) {this.setData({url: e.detail.value});},msgInput(e) {this.setData({msg: e.detail.value});},sendMsg() {let msg = this.data.msg;this.data.socketTask.send({data: msg});this.setData({msgs: [...this.data.msgs, "发送消息 -> " + msg]});}
})

效果图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1621190.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

画一个 “月饼” 陪我过中秋,玩转炫彩 “月饼” 之 基本测试

自己的画的炫彩“月饼”到了&#xff0c;本文就开始带大家来玩玩我们自己的月饼 ......by 矜辰所致前言 板子昨天就到了&#xff0c;下了班抽空把板子焊接了一下。 本文就来分享一下拿到 PCB 板子后开始的测试过程&#xff0c;也当做给初学者一个教学。 本 “月饼” 的原理…

iPad新5.0笔刷真的巨好用,技术不够笔刷来凑

工欲善其事必先利其器&#xff01;&#xff01;今天我们为你精选了 Procreate新款笔刷合集 01 Procreate 趣味复古蜡笔纹理笔刷15款 适用软件&#xff1a;Procreate5.0以上 适用系统&#xff1a;ipad系统 笔刷格式&#xff1a;brushset 素材大小&#xff1a;93MB 赠送15款…

平板触控笔要原装的吗?时下最火的平替苹果笔测评

在我们购买ipad的时候&#xff0c;我们是否会想要一支与ipad相配套的电容笔&#xff1f;其实&#xff0c;如果仅仅是为了学习或者记录&#xff0c;也没必要花那么多钱去购买一支苹果原装电容笔。平替电容笔不仅质量好&#xff0c;价格也相对实惠&#xff0c;是一种很不错的学习…

10个超酷的H5特效设计+1个仿最新苹果UI设计(压轴)

欢迎关注b站&#xff1a;小淼前端 有更多的视频讲解源代码可领取哦~ 欢迎关注b站&#xff1a;小淼前端 有更多的视频讲解源代码可领取哦~ 目录 欢迎关注b站&#xff1a;小淼前端 有更多的视频讲解源代码可领取哦~ 欢迎关注b站&#xff1a;小淼前端 有更多的视频讲解源代…

python炫彩界面库实现漂亮的登录注册窗口

下面是运行截图 from xcgui import *XInitXCGUI("") #初始化UI库 XPy_Init() #初始化UI库Py支持hWindow 0 hLayoutContent0 hCurPanel0def SwitchTab(strTy):global hCurPanelif hCurPanel:XEle_Destroy(hCurPanel)if "登陆"strTy:hCurPanel XC_LoadLayo…

老外iPad新人之10款必备应用

1. iPad打了鸡血了, 80天卖了300万台, 就算每台500美元的话,就卖了15亿美元。 2. iPad应用超过11000款,Appstore上iPad应用下载超过1200万次。 3. 手持iPad的名流如云。 无数明星政客竞折腰, 以至于iPad黑客狂喜, FBI说真麻烦~~~ 4. 联通高层直接去了美国旧金山的库比蒂…

让强大的python披上绚丽的外衣-炫彩GUI可视化界面库的使用(1)

让强大的python披上绚丽的外衣-炫彩GUI可视化界面库的使用&#xff08;1&#xff09; 作为python的忠实粉丝&#xff0c;对python的各种强大毋庸置疑。在工作中常用pyhton开发一些简单小工具可谓是得心应手&#xff0c;可是要拿给他人使用的时候就郁闷了&#xff0c;自带的TK界…

炫彩界面库UI设计器分享, 集成开发环境,C++,易语言

炫彩在线帮助文档 炫彩UI截图 炫彩IDE UI设计器 截图 炫彩webUI 炫彩缓动 炫彩 易语言 火山PC例子截图 简介 炫彩界面库–软件界面开发框架,让用户快速开发桌面软件变的简单高效;功能丰富(一千多个API接口), 简单易用,轻量级,高度DIY自定义,一键换肤,满足不同软件UI需求,安…

好玩的Ipaddian

从微薄上看到一个应用ipaddian,效果图&#xff1a; 从WIN7上模拟Ipad

魔术般效果 苹果iPad热门软件你选谁

魔术之所以受欢迎并不是因为它有什么实际意义&#xff0c;而是纯粹的好看、好玩&#xff0c;苹果App Store上也有类似的小程序&#xff0c;把它们安装在iPad上&#xff0c;就能产生不可思议的效果&#xff0c;今天ZOL平板电脑频道为大家带来五款神奇的小软件&#xff0c;一起看…

STM32F407基础总结系列(一)

STM32F407基础总结系列&#xff08;一&#xff09; 一、前言二、STM32F407部分基础小知识&#xff08;待整理&#xff09;1 外设设置相关1.1 GPIO使用1.2 定时器PWM波1.3 外部晶振参数修改 2 语言及使用环境相关2.1 C/C2.2 F407的启动文件 3 测试验证相关3.1 PWM配置IO引脚3.2 …

C#制作挂机程序V2.0—刷鼠标单击类在线视频

文章目录 往期内容回顾一、程序界面二、功能说明1.程序已经集成了Microsoft Spy的功能2.通过拖动工具自动获取窗体的Title3.拖动工具自动获取鼠标准备单击点的坐标4.通过时间设置单击事件后等待时间&#xff08;刷视频必备&#xff09;5.浏览器应用程序不再局限于FireFox6.适应…

菜鸡的秋招升级打怪之旅

记录秋招。。。 旷视一面&#xff08;2022.08.12&#xff09; softmax&#xff0c;交叉熵loss实现 import numpy as np import torch import torch.nn.functional as Fdef softmax(logits):logits_exp torch.exp(logits)logits_softmax logits_exp / torch.sum(logits_exp, …

7000字爆肝!我把14个自学编程的压箱底网站全部分享给你们啦

前一段时间&#xff0c;一个初学编程的小伙子跟我说&#xff0c;他一般在某站上找视频自学&#xff0c;但是学了2个多月&#xff0c;刚开始学的知识已经忘得差不多了&#xff0c;现在再继续学下去又听不懂&#xff0c;该怎么办&#xff1f; 经过一夜深思&#xff0c;终于想出了…

给你5分钟白漂:这些都是我的常用在线工具和网站

小伙伴们大家好&#xff0c;本期再托一次家底&#xff0c;和大家分享十几个自己日常工作学习过程中的常用在线工具和网站&#xff0c;希望能有帮助。 也欢迎小伙伴们分享和安利出你们觉得有用的工具&#xff0c;不要停啊。 注&#xff1a;本文 Github开源项目&#xff1a;gith…

吃透OLED显示原理——玩转OLED模块各种使用方法

oled模块有4种工作模式&#xff0c;分别是6800、8080两种并行接口方式、 4线的穿行SPI接口方式、IIC接口方式。通过模块的BS1/BS2设置&#xff08;通过硬件来设置&#xff09;&#xff0c;BS1/BS2的设置与模块接口模式的关系如表所示&#xff1a; 这是其中一种工作方式的模块&…

推荐52个堪称神器的学习网站,每天坚持一小时,让你受益一生【上】

本篇文章分为上下篇&#xff0c;给大家整理了一些终身受益&#xff0c;堪称神器的学习网站&#xff0c;什么行业的学习网站都有&#xff0c;推荐给大家&#xff0c;里面都是满满的干货&#xff0c;我就不过多介绍了&#xff0c;大家自行探索。 社区类 1、GitHub 我就不吭气&…

C++贪吃蛇(控制台版)

C自学精简实践教程 目录(必读) 目录 主要考察 需求 输入文件 运行效果 实现思路 枚举类型 enum class 启动代码 输入文件data.txt 的内容 参考答案 学生实现的效果 主要考察 模块划分 文本文件读取 UI与业务分离 控制台交互 数据抽象 需求 用户输入字母表示方…

炒股的策略方法

炒股的策略方法 炒股常见问题 你炒股的时候有没有遇到这样的问题&#xff1f; &#xff08;1&#xff09;需要时刻盯着大盘和个股的走势&#xff0c;一分心&#xff0c;一走神&#xff0c;就错过了机会&#xff1f;工作时没有时间和精力去看大盘走势和个股的走势&#xff0c;…