小程序云函数调用webservice接口

https://www.jianshu.com/p/2692e56251ac

 

小程序最近新出来了云开发能力,主要依赖了node.js(运行在服务器上的js),可以让我们在没有服务器的情况下,使用云开发的数据库,编写云函数(相当于接口)来完成一整套小程序的开发,后端什么的,我们不需要!

以上粗略介绍一下云开发的能力,下面言归正传,关于调用webservice接口(wsdl),小程序在不使用云函数直接用普通开发模式的js通过request也能请求,但这样存在的缺点是:

  • 1.域名必须认证(否则手机只能在调试模式下才能访问接口,这样小程序没法发布)
  • 2.不能请求http开头的

而我们在云函数中调用接口,就能跳过微信对这两点的验证,只要有自己服务器的IP,就能完成开发发布小程序

下面讲操作:

  • 1 新建云函数:代码如下


const cloud = require('wx-server-sdk')
const soap = require('soap')

cloud.init()
const db = cloud.database()

// 云函数入口函数
exports.main = async(event, context) => {
  const urls = '接口地址';
  const args = {
    'url': event.url,
    'usercode': event.usercode,
    'pwd': event.pwd,
    'os': 'weixin'
  };

  return new Promise((resolve, reject) => {
    soap.createClient(urls, function(err, client) {
      if (err) {
        console.log(err);
      }
      //返回一个客户端,并且传参调用Java的接口,接收返回的数据
      client.convertURL(args, function(error, result) {
        //打印接收到的数据
        resolve(result)
      });
    });
  })
}

这里需要注意的是:
云函数中使用 wx-server-sdk 需在对应云函数目录下安装 wx-server-sdk 依赖,在创建云函数时会在云函数目录下默认新建一个 package.json 并提示用户是否立即本地安装依赖。请注意云函数的运行环境是 Node.js,因此在本地安装依赖时务必保证已安装 Node.js,同时 node 和 npm 都在环境变量中。如不本地安装依赖,可以用命令行在该目录下运行(云函数目录下):

npm install --save wx-server-sdk@latest

同理,soap依赖

npm install --save soap@latest

  • 2 在js中调用云函数
 wx.cloud.callFunction({
              name: 'convertURL',
              data: {//传给云函数的参数
                url: that.data.url,
                usercode: 'yaya',
                pwd: '54yaya'
              },
              success: res => {
                var playurl = res.result.return;
                playurl = JSON.parse(playurl);
                console.log(playurl.data.url);
                that.setData({
                  playurl: playurl.data.url
                })
                wx.showToast({
                  title: '地址读取成功,请耐心等待',
                  icon: 'none',
                  duration: 3000
                })
              },
              fail: res => {
                wx.showToast({
                  title: '地址错误',
                  icon: 'none',
                  duration: 2000
                })
              }
            })

ok,大功告成。有用的话点个赞吧




上一篇:java-如何在CXF中使用Transform删除入站XML元素?


下一篇:java-CXF Web客户端中的动态查询参数