微信小程序开发实战(21):发起HTTPS请求

在wx对象中有一个request方法,可以发起HTTPS请求。该方法只有一个对象类型参数。该对象支持如下所示。

  • url:String类型, 必选,开发者服务器接口地址,必须使用配置后的域名

  • data:Object或String类型,可选,请求的参数

  • header:Object类型,可选,设置请求的 header , header 中不能设置 Referer

  • method:       String类型,可选,请求的方法,默认为 GET,有效值:OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT

  • dataType:String类型,可选,响应数据的类型,默认为json。如果设置了 dataType 为 json,则会尝试对响应的数据做一次 JSON.parse

  • success:Function类型,可选,收到开发者服务成功返回的回调函数,res = {data: '开发者服务器返回的内容'}

  • fail:Function 类型,可选,接口调用失败的回调函数

  • complete:Function类型,可选, 接口调用结束的回调函数(调用成功、失败都会执行)

 

注意,data属性可以是Object,也可以是String类型,但最终发送给服务器的数据是 String 类型,如果传入的 data 不是 String 类型,会被转换成 String 。转换规则如下:

  • 对于 header['content-type'] 为 'application/json' 的数据,会对数据进行 JSON 序列化

  • 对于 header['content-type'] 为 'application/x-www-form-urlencoded' 的数据,会将数据转换成 query string (encodeURIComponent(k)=encodeURIComponent(v)&encodeURIComponent(k)=encodeURIComponent(v)...)。

要想测试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);
}

对本文感兴趣,可以加李宁老师微信公众号(unitymarvel):

关注  极客起源  公众号,获得更多免费技术视频和文章。

猜你喜欢

转载自blog.csdn.net/nokiaguy/article/details/108114706
今日推荐