微信小程序 http请求详细介绍


Posted in Javascript onOctober 09, 2016

在微信小程序进行网络通信,只能和指定的域名进行通信,微信小程序包括四种类型的网络请求。

  1. 普通HTTPS请求(wx.request)
  2. 上传文件(wx.uploadFile)
  3. 下载文件(wx.downloadFile)
  4. WebSocket通信(wx.connectSocket)

这里以介绍wx.request,wx.uploadFile,wx.dowloadFile三种网络请求为主

设置域名

要微信小程序进行网络通信,必须先设置域名,不然会出现错误:

URL 域名不合法,请在 mp 后台配置后重试

需要在微信公众平台的小程序中设置域名。
在微信小程序的设置界面可以看到设置选项:

微信小程序 http请求详细介绍

设置

选择开发设置:

微信小程序 http请求详细介绍

开发设置

可以看到服务器设置:

微信小程序 http请求详细介绍

服务器设置

在这里可以设置对应四种网络访问的域名,每一种类型的网络请求需要设置一个域名,注意如果在这里设置域名为https://example.com/api/,那么https://example.com/api是无法调用的,必须加上后面/。

http请求

使用wx.request可以发起一个http请求,一个微信小程序被限制为同时只有5个网络请求。

function queryRequest(data){  
  wx.request({
    url:"https://example.com/api/",
    data:data,
    header:{
      // "Content-Type":"application/json"
    },
    success:function(res){
      console.log(res.data)
    },
    fail:function(err){
      console.log(err)
    }

  })

}

上面的代码会发送一个http get请求,然后打印出返回的结果。其中的参数也比较容易理解。

  1. url 服务器的url地址
  2. data 请求的参数可以采用String data:"xxx=xxx&xxx=xxx"的形式或者Object data:{"userId":1}的形式
  3. header 设置请求的header
  4. success 接口成功的回调
  5. fail 接口失败的回调

另外还有两个参数没有在代码里:

method http的方法,默认为GET请求

complete 调用接口结束之后的回调,无论成功或者失败该接口都会被调用

上传文件

上传文件的api为wx.uploadFile,该api会发起一个http post请求,其中的Content-type为multipart/form-data。服务器端需要按照该Content-type类型接收文件,示例代码:

function uploadFile(file,data) {
  wx.uploadFile({
    url: 'http://example.com/upload',
    filePath: file,
    name: 'file',
    formData:data,
    success:function(res){
      console.log(res.data)
    },
    fail:function(err){
      console.log(err)
    }

  })

}

其中的url,header,success,fail以及complete和普通的http请求是一样的。(微信小程序应用号交流群 563752274)
这里有区别的参数是:

name文件对应的key,服务器端需要通过name参数获取文件

formData http请求中可以使用的其他参数

下载文件

下载文件的api为wx.downloadFile,该api会发起一个http get请求,并在下载成功之后返回文件的临时路径,示例代码:

function downloadFile(url,typ,success){
  wx.downloadFile({
    url:url,
    type:typ,
    success:function(res){
      if(success){
        success(res.tempFilePath)
      }
    },
    fail:function(err){
      console.log(err)
    }
  })
}

其中的url,header,fail,complete和wx.uploadFile的参数使用是一致的,其中有区别的参数是:

type:下载资源的类型,用于客户端自动识别,可以使用的参数image/audio/video

success:下载成功之后的回调,以tempFilePath的参数返回文件的临时目录:res={tempFilePath:'文件路径'}

下载成功后的是临时文件,只会在程序本次运行期间可以使用,如果需要持久的保存,需要调用方法wx.saveFile主动持久化文件,实例代码:

function svaeFile(tempFile,success){
 wx.saveFile({
   tempFilePath:tempFile,
   success:function(res){
     var svaedFile=res.savedFilePath
     if(success){
       success(svaeFile)
     }
   }
 })
}

使用wx.saveFile保存临时文件到本地,提供给小程序下次启动时使用,其中的参数:

  1. tempFilePath 需要被保存文件的路径
  2. success 保存成功的回调,返回保存成功的路径,使用res.savedFilePath可以获取保存成功的路径
  3. fail 失败的回调
  4. complete结束的回调

超时的设置

在微信小程序开发:MINA中已经提到了在app.js中设置networkTimeout可以设置四种类型网络访问的超时时间:

"networkTimeout":{
  "request": 10000,
  "connectSocket": 10000,
  "uploadFile": 10000,
  "downloadFile": 10000
}

这里设置的超时时间对应着四种类型的网络请求。

源代码请参考:https://github.com/jjz/weixin-mina/blob/master/api/api.js

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
prototype 中文参数乱码解决方案
Nov 09 Javascript
jquery学习笔记 用jquery实现无刷新登录
Aug 08 Javascript
使用Grunt.js管理你项目的应用说明
Apr 24 Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
Aug 24 Javascript
jQuery实现摸拟alert提示框
May 22 Javascript
jQuery中delegate()方法的用法详解
Oct 13 Javascript
JavaScript中三种常见的排序方法
Feb 24 Javascript
jquery Form轻松实现文件上传
May 24 jQuery
webpack构建vue项目的详细教程(配置篇)
Jul 17 Javascript
vuejs实现递归树型菜单组件
Jan 13 Javascript
javascript代码优化的8点总结
Jan 29 Javascript
js实现详情页放大镜效果
Oct 28 Javascript
微信小程序 Flex布局详解
Oct 09 #Javascript
JavaScript实现Java中Map容器的方法
Oct 09 #Javascript
JavaScript基于对象去除数组重复项的方法
Oct 09 #Javascript
JS中this上下文对象使用方式
Oct 09 #Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
Oct 09 #Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
Oct 09 #Javascript
BootStrap中Table分页插件使用详解
Oct 09 #Javascript
You might like
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
2015/12/08 PHP
基于PHP实现通过照片获取ip地址
2016/04/26 PHP
php关闭warning问题的解决方法
2016/05/17 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
PHP+RabbitMQ实现消息队列的完整代码
2019/03/20 PHP
使用户点击后退按钮使效三行代码
2007/07/07 Javascript
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
2012/02/03 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
在JavaScript中对HTML进行反转义详解
2016/05/18 Javascript
Bootstrap编写一个兼容主流浏览器的受众门户式风格页面
2016/07/01 Javascript
Angularjs手动解析表达式($parse)
2016/10/12 Javascript
d3.js入门教程之数据绑定详解
2017/04/28 Javascript
基于JS实现带动画效果的流程进度条
2018/06/01 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
2019/08/28 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
vue二选一tab栏切换新做法实现
2021/01/19 Vue.js
Python基础教程之正则表达式基本语法以及re模块
2016/03/25 Python
Python 微信之获取好友昵称并制作wordcloud的实例
2019/02/21 Python
Python3日期与时间戳转换的几种方法详解
2019/06/04 Python
Django如何自定义model创建数据库索引的顺序
2019/06/20 Python
在Pandas中处理NaN值的方法
2019/06/25 Python
python和c语言的主要区别总结
2019/07/07 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
python序列类型种类详解
2020/02/26 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
完美解决keras保存好的model不能成功加载问题
2020/06/11 Python
英国领先的珍珠首饰品牌:Orchira
2016/09/11 全球购物
来自圣地亚哥的实惠太阳镜:Knockaround
2018/08/27 全球购物
瑞士隐形眼镜和护理产品网上商店:Linsenklick
2019/10/21 全球购物
小学毕业感言500字
2014/02/28 职场文书
车辆转让协议书
2014/04/15 职场文书
淘宝客服工作职责
2014/07/11 职场文书
争当四好少年演讲稿
2014/09/13 职场文书
投标单位介绍信
2015/05/05 职场文书
教你如何让spark sql写mysql的时候支持update操作
2022/02/15 MySQL