目录

调用函数

查询触发器标识

当您在创建的函数或函数别名中创建了一个HTTP类型的触发器后,在应用客户端调用函数时需要传入HTTP触发器的标识,查询方法如下:

在函数的触发器页面点击“HTTP触发器”,查看“触发URL”的后缀,获取触发器的标识,格式为“函数名-版本号”。如下图所示,“myhandlerxxxx-$latest”即为HTTP触发器标识。

调用函数

应用集成了云函数SDK后,可以在应用内直接通过SDK API调用HarmonyOS 开发者中心的云函数,云函数SDK与HarmonyOS 开发者中心的函数调用基于HTTPS的安全访问。

  1. 在调用函数前,需要调用AGConnectFunction.getInstance初始化AGConnectFunction实例。
    “Java”
    private AGConnectFunction function;
    function = AGConnectFunction.getInstance();
    “Kotlin”
    var function = AGConnectFunction.getInstance()
  1. 调用AGConnectFunction.wrap设置函数,在方法中传入触发器标识。
  2. 根据函数入参情况,调用相关方法来调用函数。
    • 如果函数没有入参,可以调用FunctionCallable.call()来调用函数。
      “Java”
      function.wrap("myhandlerxxxx-$latest").call();
      “Kotlin”
      function.wrap("myhandlerxxxx-$latest").call()
    • 如果函数有入参,可以调用FunctionCallable.call(T object)来调用函数,多个入参添加到object对象中。

      其中HTTP触发器传递给函数的event对象数据格式,请参见event对象说明。

      “Java”
      function.wrap("myhandlerxxxx-$latest").call(map);
      “Kotlin”
      function.wrap("myhandlerxxxx-$latest").call(map)
  3. 如果您需要关注函数的返回值,可以在接口返回的Task中设置一个addOnCompleteListener回调监听,在回调方法中获取包含函数执行结果的FunctionResult对象,调用FunctionResult.getValue可以获取函数执行后的返回值或返回对象。
    “Java”
    private void getWeek(String date) {
         HashMap<String, String> map = new HashMap();
         map.put("time", date);
         function.wrap("myhandlerxxxx-$latest").call(map)
                 .addOnCompleteListener(new OnCompleteListener<FunctionResult>() {
                     @Override
                     public void onComplete(Task<FunctionResult> task) {
                         if (task.isSuccessful()) {
                             String value = task.getResult().getValue();
                             
                         } else {
                             Exception e = task.getException();
                             if (e instanceof AGCFunctionException) {
                                 AGCFunctionException functionException = (AGCFunctionException) e;
                                 int errCode = functionException.getCode();
                                 String message = functionException.getMessage();
                             }
                             // ...
                         }
                     }
                 });
     } 
    “Kotlin”
    private fun getWeek(date: String) {
            var function = AGConnectFunction.getInstance()
            val map: HashMap<String, String> = HashMap()
            map["time"] = date
            function.wrap("myhandlerxxxx-\$latest").call(map)
                .addOnCompleteListener(OnCompleteListener<FunctionResult?> { task ->
                    if (task.isSuccessful) {
                        val value = task.result.value
                    } else {
                        val e = task.exception
                        if (e is AGCFunctionException) {
                            val functionException = e
                            val errCode = functionException.code
                            val message = functionException.message
                        }
                        // ...
                    }
                })
    }