在wx对象中有一个request方法,可以发起HTTPS请求。该方法只有一个对象类型参数。该对象支持如下所示。
注意,data属性可以是Object,也可以是String类型,但最终发送给服务器的数据是 String 类型,如果传入的 data 不是 String 类型,会被转换成 String 。转换规则如下:
要想测试wx.request方法,首先需要有一个使用https的链接,并且该链接的域名需要与小程序服务器配置中设置的一样。读者可以利用上一节介绍的腾讯云的二级域名,也可以在网上找一个https链接,但要注意,需要修改小程序服务器配置的“request合法域名”。这些https链接必须是在国内注册的,而且已经成功备案。
为了方便,这里使用了如下链接来测试wx.request方法。读者也可以使用其他的链接,但要求响应数据为json格式,因为后面的代码要测试json数据解析。
https://edu.51cto.com/index.php?do=spree&m=getGifts
因此,要将“request合法域名”设置为https://edu.51cto.com,否则wx.request方法无法请求该链接。
下面的代码使用wx.request方法请求该链接,并将dataType属性值设为text/plain,这样就会直接返回原始字符串。
wx.request({
url: 'https://geekori.com/download/test.txt',
dataType:'text/plain',
success: function(res) {
// 在控制台中直接输出返回的数据
console.log(res.data)
}
})
执行这段代码后,会在Console中输入如图1所示的信息,很明显,返回的是原始的json数据。
图1 响应数据是纯文本形式
现在将前面代码中的dataType属性去掉,这样wx.request方法会认为返回了json格式的数据(要将test.txt换成data.json,而且下载json格式的文件不能将dataType 属性设为text/plain),并会对json格式的数据进行解析,也就是说,这时res.data就不再是字符串了,而是一个JSON对象。返回的结果如图2所示。
图2 以JSON格式返回数据
按着返回的JSON格式的数据,已经将其解析成相应的对象和数组格式。例如,如果要获取data对象中coupons数组第一个元素的batchName属性的值,可以使用下面的代码。
success: function(res) {
console.log(res.data.data.coupons[0].batchName);
}