Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IBM MobileFirst:从Java调用适配器-InvokeProcess_Java_Ibm Mobilefirst_Mobilefirst Adapters - Fatal编程技术网

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

IBM MobileFirst:从Java调用适配器-InvokeProcess,java,ibm-mobilefirst,mobilefirst-adapters,Java,Ibm Mobilefirst,Mobilefirst Adapters,我正在尝试从Java调用一个适配器,它可以正常工作 DataAccessService service = WorklightBundles.getInstance().getDataAccessService(); ProcedureQName procedure = new ProcedureQName(adapterName,adapterProc); service.invokeProcedure(procedure, String); 当必须将上述InvokeProcess中的字符串

我正在尝试从Java调用一个适配器,它可以正常工作

DataAccessService service = WorklightBundles.getInstance().getDataAccessService();
ProcedureQName procedure = new ProcedureQName(adapterName,adapterProc);
service.invokeProcedure(procedure, String);
当必须将上述InvokeProcess中的字符串作为输入传递给被调用的适配器时,就会出现问题。当不需要参数时,它可以工作,但当我传递一个字符串(例如“Hello”)时,它就会中断。原因是,调用它时,Javascript适配器impl.js.不会解析字符串参数中传递的值,因此会抛出一个错误:

无法调用适配器名称/过程重命名,因为无效 运行时传递的字符串参数中的字符('H'第1行)

我曾尝试在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对象并将其字符串化

    您好,Anton,当我调用invokeProcedure方法时,它返回了一条错误消息[IO:第1行第14列的无效令牌],您对此有什么想法吗?