网络

my.request

小程序网络请求

基础库 1.11.0 以上才支持, 可以使用 my.canIUse('request') 做兼容性处理。详见 兼容接口说明

img.jpg

注意

支付宝端旧接口my.httpRequest将被废弃,请使用my.request 来代替。钉钉端目前尚未支持my.request,请继续使用my.httpRequest

重要:my.request 的请求头默认值为 {'content-type': 'application/json'},而不是{'content-type': 'application/x-www-form-urlencoded'}

入参

名称类型必填描述
urlString目标服务器url
headersObject设置请求的 HTTP 头,默认 {'content-type': 'application/json'}
methodString默认GET,目前支持GET/POST
dataObject请求参数
timeoutNumber超时时间,单位ms,默认30000
dataTypeString期望返回的数据格式,默认json,支持json,text,base64
successFunction调用成功的回调函数
failFunction调用失败的回调函数
completeFunction调用结束的回调函数(调用成功、失败都会执行)

data参数说明

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

  • 若方法为GET,会将数据转换成 query string: encodeURIComponent(k)=encodeURIComponent(v)&encodeURIComponent(k)=encodeURIComponent(v)…
  • 若方法为 POSTheaders['content-type']application/json ,会对数据进行 JSON 序列化
  • 若方法为 POSTheaders['content-type']application/x-www-form-urlencoded ,会将数据转换成 query string: encodeURIComponent(k)=encodeURIComponent(v)&encodeURIComponent(k)=encodeURIComponent(v)…

success返回值

名称类型描述
dataString响应数据,格式取决于请求时的 dataType 参数
statusNumber响应码
headersObject响应头

错误码

error描述
11无权跨域
12网络出错
13超时
14解码失败
19HTTP错误
20请求已被停止/服务端限流
当入参dataType值为json时,小程序框架会先对返回结果做JSON.prase操作,如果解析失败,则会返回error为14的错误。当入参dataType值为text时,如果返回的内容格式不符,也会返回error为14的错误。遇到此错误时,请先检查dataType的设置是否正确。

返回值

RequestTask

网络请求任务对象

基础库 1.11.0 以上才支持, 可以使用 my.canIUse('request') 做兼容性处理。详见 兼容接口说明

方法

RequestTask.abort()

基础库 1.11.0 以上才支持, 可以使用 my.canIUse('request') 做兼容性处理。详见 兼容接口说明

代码示例

  1. my.request({
  2. url: 'https://httpbin.org/post',
  3. method: 'POST',
  4. data: {
  5. from: '支付宝',
  6. production: 'AlipayJSAPI',
  7. },
  8. dataType: 'json',
  9. success: function(res) {
  10. my.alert({content: 'success'});
  11. },
  12. fail: function(res) {
  13. my.alert({content: 'fail'});
  14. },
  15. complete: function(res) {
  16. my.hideLoading();
  17. my.alert({content: 'complete'});
  18. }
  19. });
  20. // 返回RequestTask,可以调用abort方法取消请求
  21. const task = my.request({url: 'https://httpbin.org/post'})
  22. task.abort()
注意:如果 request 调用返回「无权调用该接口」时,则需要在开放平台配置后台的 request 中添加你需要访问的域名地址(小程序详情 > 设置 > 开发设置 > httpRequest接口请求域名白名单):undefined

my.uploadFile

暂不支持个人开发者使用

上传本地资源到开发者服务器。扫码体验:

img.jpg

入参

名称类型必填描述
urlString开发者服务器地址
filePathString要上传文件资源的本地定位符
fileNameString文件名,即对应的 key, 开发者在服务器端通过这个 key 可以获取到文件二进制内容
fileTypeString文件类型,image / video / audio
headerObjectHTTP 请求 Header
formDataObjectHTTP 请求中其他额外的 form 数据
successFunction调用成功的回调函数
failFunction调用失败的回调函数
completeFunction调用结束的回调函数(调用成功、失败都会执行)

success 返回值

名称类型描述
dataString服务器返回的数据
statusCodeStringHTTP 状态码
headerObject服务器返回的 header

错误码

error描述
11文件不存在
12上传文件失败
13没有权限

代码示例

  1. my.uploadFile({
  2. url: '请使用自己服务器地址',
  3. fileType: 'image',
  4. fileName: 'file',
  5. filePath: '...',
  6. success: (res) => {
  7. my.alert({
  8. content: '上传成功'
  9. });
  10. },
  11. });

my.downloadFile

暂不支持个人开发者使用

下载文件资源到本地。扫码体验:

img.jpg

入参

名称类型必填描述
urlString下载文件地址
headerObjectHTTP 请求 Header
successFunction调用成功的回调函数
failFunction调用失败的回调函数
completeFunction调用结束的回调函数(调用成功、失败都会执行)

success 返回值

名称类型描述
apFilePathString文件临时存放的位置

错误码

error描述
12下载失败
13没有权限

代码示例

  1. my.downloadFile({
  2. url: 'http://img.alicdn.com/tfs/TB1x669SXXXXXbdaFXXXXXXXXXX-520-280.jpg',
  3. success({ apFilePath }) {
  4. my.previewImage({
  5. urls: [apFilePath],
  6. });
  7. },
  8. fail(res) {
  9. my.alert({
  10. content: res.errorMessage || res.error,
  11. });
  12. },
  13. });

my.connectSocket

创建一个 WebSocket 的连接;一个支付宝小程序同时只能保留一个 WebSocket 连接,如果当前已存在 WebSocket 连接,会自动关闭该连接,并重新创建一个新的 WebSocket 连接。

扫码体验:

img.jpg

入参

名称类型必填描述
urlString目标服务器url
dataObject请求的参数
headerObject设置请求的头部
successFunction调用成功的回调函数
failFunction调用失败的回调函数
completeFunction调用结束的回调函数(调用成功、失败都会执行)

错误码

error描述
1未知错误
2网络连接已经存在
3URL参数为空
4无法识别的URL格式
5URL必须以ws或者wss开头
6连接服务器超时
7服务器返回的https证书无效
8服务端返回协议头无效
9WebSocket请求没有指定Sec-WebSocket-Protocol请求头
10网络连接没有打开,无法发送消息
11消息发送失败
12无法申请更多内存来读取网络数据

示例代码

  1. my.connectSocket({
  2. url: 'test.php',
  3. data: {},
  4. header:{
  5. 'content-type': 'application/json'
  6. },
  7. method:"GET",
  8. });

my.onSocketOpen

监听WebSocket连接打开事件。

示例代码

  1. my.connectSocket({
  2. url: 'test.php',
  3. });
  4. my.onSocketOpen(function(res) {
  5. console.log('WebSocket 连接已打开!');
  6. });

my.offSocketOpen

取消监听WebSocket连接打开事件。

  1. Page({
  2. onLoad() {
  3. this.callback = this.callback.bind(this);
  4. my.onSocketOpen(this.callback);
  5. },
  6. onUnload() {
  7. my.offSocketOpen(this.callback);
  8. },
  9. callback(res) {
  10. },
  11. })

my.onSocketError

监听WebSocket错误。

示例代码

  1. my.connectSocket({
  2. url: '开发者的服务器地址'
  3. });
  4. my.onSocketOpen(function(res){
  5. console.log('WebSocket 连接已打开!');
  6. });
  7. my.onSocketError(function(res){
  8. console.log('WebSocket 连接打开失败,请检查!');
  9. });

my.offSocketError

取消监听WebSocket错误。

  1. Page({
  2. onLoad() {
  3. this.callback = this.callback.bind(this);
  4. my.onSocketError(this.callback);
  5. },
  6. onUnload() {
  7. my.offSocketError(this.callback);
  8. },
  9. callback(res) {
  10. },
  11. })

my.sendSocketMessage

通过 WebSocket 连接发送数据,需要先使用 my.connectSocket 发起建连,并在 my.onSocketOpen 回调之后再发送数据。

入参

名称类型必填描述
dataString/ArrayBuffer需要发送的内容:普通的文本内容 String 或者经 base64 编码后的 String
isBufferBoolean如果需要发送二进制数据,需要将入参数据经 base64 编码成 String 后赋值 data,同时将此字段设置为true,否则如果是普通的文本内容 String,不需要设置此字段
successFunction回调函数
failFunction调用失败的回调函数
completeFunction调用结束的回调函数(调用成功、失败都会执行)

示例代码

  1. my.sendSocketMessage({
  2. data: this.data.toSendMessage, // 需要发送的内容
  3. success: (res) => {
  4. my.alert({content: '数据发送!' + this.data.toSendMessage});
  5. },
  6. });

my.onSocketMessage

监听WebSocket接受到服务器的消息事件。

回调返回值

名称类型描述
dataString/ArrayBuffer服务器返回的消息:普通的文本 String 或者经 base64 编码后的 String
isBufferBoolean如果此字段值为truedata字段表示接收到的经过了 base64 编码后的 String,否则 data 字段表示接收到的普通 String 文本。

示例代码

  1. my.connectSocket({
  2. url: '服务器地址'
  3. })
  4. my.onSocketMessage(function(res) {
  5. console.log('收到服务器内容:' + res.data)
  6. })

my.offSocketMessage

取消监听WebSocket接受到服务器的消息事件。

my.closeSocket

入参

名称类型必填描述最低版本
successFunction回调函数
failFunction调用失败的回调函数
completeFunction调用结束的回调函数(调用成功、失败都会执行)

代码示例

关闭WebSocket连接。

  1. my.onSocketOpen(function() {
  2. my.closeSocket()
  3. })
  4. my.onSocketClose(function(res) {
  5. console.log('WebSocket 已关闭!')
  6. })

my.onSocketClose

代码示例

监听WebSocket关闭。

  1. onLoad() {
  2. // 注意: 回调方法的注册在整个小程序启动阶段只要做一次,调多次会有多次回调
  3. my.onSocketClose((res) => {
  4. my.alert({content: '连接已关闭!'});
  5. this.setData({
  6. sendMessageAbility: false,
  7. closeLinkAbility: false,
  8. });
  9. });
  10. // 注意: 回调方法的注册在整个小程序启动阶段只要做一次,调多次会有多次回调
  11. my.onSocketOpen((res) => {
  12. my.alert({content: '连接已打开!'});
  13. this.setData({
  14. sendMessageAbility: true,
  15. closeLinkAbility: true,
  16. });
  17. });
  18. my.onSocketError(function(res){
  19. my.alert('WebSocket 连接打开失败,请检查!' + res);
  20. });
  21. // 注意: 回调方法的注册在整个小程序启动阶段只要做一次,调多次会有多次回调
  22. my.onSocketMessage((res) => {
  23. my.alert({content: '收到数据!' + JSON.stringify(res)});
  24. });
  25. }
  26. connect_start() {
  27. my.connectSocket({
  28. url: '服务器地址', // 开发者服务器接口地址,必须是 wss 协议,且域名必须是后台配置的合法域名
  29. success: (res) => {
  30. my.showToast({
  31. content: 'success', // 文字内容
  32. });
  33. },
  34. fail:()=>{
  35. my.showToast({
  36. content: 'fail', // 文字内容
  37. });
  38. }
  39. });
  40. },

my.offSocketClose

取消监听WebSocket关闭。

原文: https://docs.alipay.com/mini/api/network