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)
令人惊讶的是,这目前运行良好。我想了解是否,
- 是这种情况下的正确方法,
- 以后使用 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 对象并将其字符串化。
我正在尝试从 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)
令人惊讶的是,这目前运行良好。我想了解是否,
- 是这种情况下的正确方法,
- 以后使用 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 对象并将其字符串化。