前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信小程序开发实战(21):发起HTTPS请求

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

作者头像
蒙娜丽宁
发布2020-08-21 10:43:47
1.1K0
发布2020-08-21 10:43:47
举报
文章被收录于专栏:极客起源极客起源

在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,这样就会直接返回原始字符串。

代码语言:javascript
复制
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属性的值,可以使用下面的代码。

代码语言:javascript
复制
success: function(res) {
  console.log(res.data.data.coupons[0].batchName);
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极客起源 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档