微信小程序之wx.request网络请求与服务器配置

发布时间:2018-01-29 编辑:小张个人博客 查看次数:18740

关于小程序中网络相关API的说明

在小程序中使用网络相关的 API 时,需要注意下列问题:

服务器域名配置

每个微信小程序需要事先设置一个通讯域名,小程序可以跟指定的域名与进行网络通信。包括普通 HTTPS 请求(request)、上传文件(uploadFile)、下载文件(downloadFile) 和 WebSocket 通信(connectSocket)

配置流程

服务器域名请在 小程序后台-设置-开发设置-服务器域名 中进行配置,配置时需要注意:

域名只支持 https (requestuploadFiledownloadFile) 和 wss (connectSocket) 协议;

域名不能使用 IP 地址或 localhost,且不能带端口号

域名必须经过 ICP 备案

出于安全考虑,api.weixin.qq.com 不能被配置为服务器域名,相关API也不能在小程序内调用。开发者应将 appsecret 保存到后台服务器中,通过服务器使用 appsecret 获取 accesstoken,并调用相关 API。

对于每个接口,分别可以配置最多20个域名

HTTPS 证书

小程序必须使用 HTTPS 请求。小程序内会对服务器域名使用的 HTTPS 证书进行校验,如果校验失败,则请求不能成功发起。由于系统限制,不同平台对于证书要求的严格程度不同。为了保证小程序的兼容性,建议开发者按照最高标准进行证书配置,并使用相关工具检查现有证书是否符合要求。

对证书要求如下:

  1. HTTPS 证书必须有效。证书必须被系统信任,部署SSL证书的网站域名必须与证书颁发的域名一致,证书必须在有效期内;

  2. iOS 不支持自签名证书;

  3. iOS 下证书必须满足苹果 App Transport Security (ATS) 的要求;

  4. TLS 必须支持 1.2 及以上版本。部分旧 Android 机型还未支持 TLS 1.2,请确保 HTTPS 服务器的 TLS 版本支持1.2及以下版本;

  5. 部分 CA 可能不被操作系统信任,请开发者在选择证书时注意小程序和各系统的相关通告。

关于请求

默认超时时间和最大超时时间都是 60s

request、uploadFile、downloadFile 的最大并发限制是 10

网络请求的 referer header 不可设置。其格式固定为 https://servicewechat.com/{appid}/{version}/page-frame.html,其中 {appid} 为小程序的 appid,{version} 为小程序的版本号,版本号为 0 表示为开发版、体验版以及审核版本,版本号为 devtools 表示为开发者工具,其余为正式版本。

小程序进入后台运行后(非置顶聊天),如果 5s 内网络请求没有结束,会回调错误信息 fail interrupted;在回到前台之前,网络请求接口调用都会无法调用。

关于服务器返回

返回值编码

建议服务器返回值使用 UTF-8 编码。对于非 UTF-8 编码,小程序会尝试进行转换,但是会有转换失败的可能。

小程序会自动对 BOM 头进行过滤。


回调

只要成功接收到服务器返回,无论statusCode是多少,都会进入success回调。请开发者根据业务逻辑对返回值进行判断。

wx.request(OBJECT)网络请求示例代码:

// wx.request 网络请求(./util.js)
function http(url,callBack,data) {
   wx.request({
      url: url, // 请求服务器地址
      data:{skip:data},  // 请求的参数
      method: 'GET',  // (需大写)有效值:OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
      header: {  // 设置请求的 header,header 中不能设置 Referer。
         // 'content-type': 'application/json' // 默认值
         'content-type': 'application/xml' // 默认值
      },
      success: function (res) { // 收到开发者服务成功返回的回调函数
         // success
         callBack(res.data);
      },
      fail: function () { // 接口调用失败的回调函数
         console.log("出错了!");
      }
   });
}
  /**
   * 生命周期函数--监听页面加载
   */
   onLoad: function (e) {
      var that = this;
      wx.showLoading({ title: '加载中', }); // 数据加载提示框 
      // 文章列表请求 
      var url = app.globalData.wxBlogUrl + "ArticleList"; 
      util.http(url, that.blogArticleData);
   },
 // 文章数据处理
   blogArticleData: function (data) {
      var totalArticle = {};
      if (data != '') {// 判断请求数据返回是否为空
         // 追加文章新数据和旧数据合并
         if (!this.data.isEmpty && this.data.totalCount != 0) {
            totalArticle = this.data.Article.concat(data);
         } else {
            totalArticle = data;
            this.data.isEmpty = false;
         }
          console.log(totalArticle);
         this.setData({
            Article: totalArticle
         });
         wx.hideLoading(); // 隐藏提示框
      }else{
         wx.showToast({
            title: '没有更多的数据!',
            icon: 'success',
            duration: 2000
         })
      }  
   },

wx.request网络请求返回的数据.jpg


出处:小张个人博客

网址:http://blog.023xs.cn/

您的支持是对博主最大的鼓励,感谢您的认真阅读。欢迎转载,但请保留该声明。

顶部

Copyright © 小张个人博客 All Rights Reserved 渝ICP备15006773号-1

联系方式:[email protected] | 本站文章仅供学习和参考

渝公网安备 50024102500267号