• 小程序云函数调用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,大功告成。有用的话点个赞吧




  • 相关阅读:
    [codeforces] 97B Superset || 平面分治
    [hdu] 5696 区间的价值 || 序列分治
    [zoj] 1937 [poj] 2248 Addition Chains || ID-DFS
    [poj] 2286 The Rotation Game || ID-DFS
    [codeforces] 25E Test || hash
    luogu P1196 银河英雄传说
    luogu P1357 花园
    luogu P1156 垃圾陷阱
    luogu P1127 词链
    luogu P1131 时态同步
  • 原文地址:https://www.cnblogs.com/qinlongqiang/p/12023604.html
Copyright © 2020-2023  润新知