在微信小程序进行网络通信,只能和指定的域名进行通信,微信小程序包括四种类型的网络请求。 这里以介绍wx.request ,wx.uploadFile ,wx.dowloadFile 三种网络请求为主 设置域名要微信小程序进行网络通信,必须先设置域名,不然会出现错误: URL 域名不合法,请在 mp 后台配置后重试
需要在微信公众平台的小程序中设置域名。 在微信小程序的设置界面可以看到设置选项: 选择开发设置 : 可以看到服务器设置: 在这里可以设置对应四种网络访问的域名,每一种类型的网络请求需要设置一个域名,注意如果在这里设置域名为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:{
},
success:function(res){
console.log(res.data)
},
fail:function(err){
console.log(err)
}
})
}
上面的代码会发送一个http get请求,然后打印出返回的结果。其中的参数也比较容易理解。 另外还有两个参数没有在代码里: 上传文件上传文件的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请求是一样的。 这里有区别的参数是: 下载文件下载文件的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 的参数使用是一致的,其中有区别的参数是: function svaeFile(tempFile,success){
wx.saveFile({
tempFilePath:tempFile,
success:function(res){
var svaedFile=res.savedFilePath
if(success){
success(svaeFile)
}
}
})
}
使用wx.saveFile 保存临时文件到本地,提供给小程序下次启动时使用,其中的参数: 超时的设置在微信小程序开发:MINA中已经提到了在app.js 中设置networkTimeout 可以设置四种类型网络访问的超时时间: "networkTimeout":{
"request": 10000,
"connectSocket": 10000,
"uploadFile": 10000,
"downloadFile": 10000
}
这里设置的超时时间对应着四种类型的网络请求。 源代码请参考:https://github.com/jjz/weixin... |