WL 6.1.0.02 -如何从原生iOS和原生Android传递JSON对象到HTTP Javascript适配器



我们的项目应该重用现有的适配器,这些适配器期望JSON对象作为适配器过程的输入参数。

当我们尝试使用

调用适配器时
WLProcedureInvocationData *myInvocationData = [[WLProcedureInvocationData alloc] initWithAdapterName:@"UserProfileAdapter" procedureName:@"getUserProfile"];
myInvocationData.parameters = [NSArray arrayWithObjects:@"{"userEmail" : "xxx@xxx.com"}", nil];

则传递给Adapter过程的输入对象不是Javascript对象,而是Javascript字符串。

为了用它生成一个对象,我们总是需要使用

将输入从字符串解析为对象:
input = JSON.parse(input);

因为我们是在混合应用中重用生产中的现有代码,所以这不是一个选项,因为在混合应用中这很好。

我们如何将JSON传递给Javascript适配器,以便适配器自动创建输入对象而不是字符串?

我们找到的答案是Swift和Android…没有再尝试ObjC。

iOS:

//Create JSON Object with keys and values
let jsonObject: [String: AnyObject] = [
                "userName": "xxx@xxx.com",
                "password": "12345"
            ]
let procedureData = WLProcedureInvocationData(adapterName: "AuthAdapter", procedureName: "login")
procedureData.parameters = [jsonObject]
Android:

JSONObject jsonObj = new JSONObject(""userName":"xxx@xx.com","password":"1234"}");
Object[] params = new Object[]{jsonObj};
WLProcedureInvocationData invocationData = new WLProcedureInvocationData("AuthAdapter", "login");
invocationData.setParameters(params);

我们还没有尝试过更深层次的JSON结构,这可能仍然很麻烦,但对于一个基本的JSON,这对我们来说现在很好。

最新更新