微信小程序 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 相关文章推荐
js 无提示关闭浏览器页面的代码
Mar 09 Javascript
jQuery AJAX 调用WebService实现代码
Mar 24 Javascript
缓动函数requestAnimationFrame 更好的实现浏览器经动画
Dec 07 Javascript
js中window.open打开一个新的页面
Aug 10 Javascript
html的DOM中document对象images集合用法实例
Jan 21 Javascript
js如何判断访问是来自搜索引擎(蜘蛛人)还是直接访问
Sep 14 Javascript
JQuery 传送中文乱码问题的简单解决办法
May 24 Javascript
express文件上传中间件Multer详解
Oct 24 Javascript
浅谈 Vue v-model指令的实现原理
Jun 08 Javascript
jQuery自动或手动图片切换效果
Oct 11 jQuery
JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例
Dec 14 Javascript
JavaScript如何使用插值实现图像渐变
Jun 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
定制404错误页面,并发信给管理员的程序
2006/10/09 PHP
php如何解决无法上传大于8M的文件问题
2014/03/10 PHP
简单了解WordPress开发中update_option()函数的用法
2016/01/11 PHP
浅析Yii2中GridView常见操作
2016/04/22 PHP
php使用curl下载指定大小的文件实例代码
2017/09/30 PHP
js 覆盖和重载 函数
2009/09/25 Javascript
jquery中toggle函数交替使用问题
2015/06/22 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
2016/06/12 Javascript
学习Javascript闭包(Closure)知识
2016/08/07 Javascript
完美解决浏览器跨域的几种方法(汇总)
2017/05/08 Javascript
在vue项目中,将juery设置为全局变量的方法
2018/09/25 Javascript
Vue开发之watch监听数组、对象、变量操作分析
2019/04/25 Javascript
深入解析koa之中间件流程控制
2019/06/17 Javascript
详解Vue中的基本语法和常用指令
2019/07/23 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
2019/09/20 Javascript
Vue路由管理器Vue-router的使用方法详解
2020/02/05 Javascript
js实现自动播放匀速轮播图
2020/02/06 Javascript
Python中的pprint折腾记
2015/01/21 Python
简单介绍Python中的JSON模块
2015/04/08 Python
Pthon批量处理将pdb文件生成dssp文件
2015/06/21 Python
Python使用设计模式中的责任链模式与迭代器模式的示例
2016/03/02 Python
Python输出各行命令详解
2018/02/01 Python
Python爬虫框架Scrapy实例代码
2018/03/04 Python
15行Python代码带你轻松理解令牌桶算法
2018/03/21 Python
Django框架模板介绍
2019/01/15 Python
python图像和办公文档处理总结
2019/05/28 Python
Python3实现将一维数组按标准长度分隔为二维数组
2019/11/29 Python
Python基于Serializer实现字段验证及序列化
2020/11/04 Python
python3爬虫中多线程进行解锁操作实例
2020/11/25 Python
CSS3中媒体查询结合rem布局适配手机屏幕
2019/06/10 HTML / CSS
巴西购物网站:Onofre Agora
2020/06/08 全球购物
中专自荐信
2013/10/13 职场文书
本科毕业生求职自荐信
2014/04/09 职场文书
如何制定一份可行的计划!
2019/06/21 职场文书
CSS3 Tab动画实例之背景切换动态效果
2021/08/23 HTML / CSS
vue实现书本翻页动画效果实例详解
2022/04/08 Vue.js