IBM MobileFirst:从 Java 调用适配器 - InvokeProcedure

IBM MobileFirst: Invoking adapter from Java- InvokeProcedure

我正在尝试从 Java 调用适配器,它与

一起工作正常
DataAccessService service = WorklightBundles.getInstance().getDataAccessService();
ProcedureQName procedure = new ProcedureQName(adapterName,adapterProc);
service.invokeProcedure(procedure, String);

当必须将上述 invokeProcedure 中的字符串作为输入传递给调用的适配器时,就会出现问题。当不需要参数时它可以工作,但是当我传递一个字符串(例如 "Hello")时它会中断。原因是,当调用它时,Java脚本适配器不解析在字符串参数中传递的值-impl.js.,因此会抛出错误说

adapter name/procedurename cannot be invoked because of invalid characters('H' line 1) in the String argument passed in runtime

我尝试在com.ibm.json.java.*包中使用JSONArray/JSONObject,但错误依旧.

所以尝试使用 invokeProcedure(ProcedureQName,JSONArray,long nRequestID) 的另一个重载。像,

service.invokeProcedure(procedure, objArray,-1)

令人惊讶的是,这目前运行良好。我想了解是否,

  1. 是这种情况下的正确方法,
  2. 以后使用 invokeProcedure 的 3 参数重载会不会有任何问题?

请帮忙。

您需要将参数作为字符串化数组传递。例如。

service.invokeProcedure(procedure, "[1,2,3,4]");
service.invokeProcedure(procedure, "[1,2,'three','four']");
service.invokeProcedure(procedure, "[1,2,true,false]");

如果只有一个参数,只需做一个只有一个值的数组

service.invokeProcedure(procedure, "['myStringParam']");

另一种选择是创建 JSONArray 对象并将其字符串化。