javascript - FWLSE0013E : Cannot invoke procedure JSONObject cannot be cast to JSONArray

标签 javascript json ibm-mobilefirst

我的 IBM Mobile 第一个应用程序中有一个名为登录的 clinet 侧功能 我从这个link得到它.

login: function (username,password){    
            //promise
            var logindef = $q.defer();
            //tempuser
            tempUser = {username:username, password:password};
            userObj.username = username;
            checkOnline().then(function (onl){
                if (onl){ //online
                    console.log("attempting online login");
                    var parameters={
                            'username':'username',
                            'password':'password'
                        };
                    var options = {
                        parameters:parameters,  
                        adapter:"realmAuth",
                        procedure:"submitLogin"
                    };
                    ch.submitAdapterAuthentication(options,{
                        onSuccess: function(){
                            console.log("-> submitAdapterAuthentication onSuccess!");
                            //update user info, as somehow isUserAuthenticated return false without it
                            WL.Client.updateUserInfo({onSuccess: function(){    
                                //return promise
                                logindef.resolve(true);
                            }});
                        }
                    });
                } else { //offline
                    console.log("attempting offline login");
                    logindef.resolve(offlineLogin());
                }
            });
            return logindef.promise;
        },

我想调用名为submitLogin的适配器函数

function submitLogin(parameters){
        if (!parameters)
        return { 'isSuccessful': false, 'errorMsg' : 'parameters is ' + parameters};
        var role="";
        if (parameters.username=='admin') 
            role='admin';
        else
            role='customer';
        var input = {
                method : 'post',
                returnedContentType : 'plain',
                path : 'rest/default/V1/integration/' + role + '/token'+
                            '?username='+parameters.username+
                            '&password='+parameters.password,
                headers: {"Accept":"application\/json"} 
            };
            var response = WL.Server.invokeHttp(input);
            var token=response.text;
            token = token.replace("\"", "");            //delete the ""
            token = token.replace("\"", "");*/
            //token exp: l9ea4tv62mbfy7kmt0ekv6vdxmb23gjp
            if (token!=null) 
            { 
                var userIdentity = {
                        userId: parameters.username,
                        displayName: parameters.username, 
                        attributes: {
                            foo: "bar"
                        }
                };
                WL.Server.setActiveUser("AdapterAuthRealm", userIdentity); 
                
                return { 
                    authRequired: true 
                };
            }

    return onAuthRequired(null, "Invalid login credentials");
}

当尝试在导航器中执行我的应用程序时,我收到此错误:

[ERROR ] FWLSE0013E: Cannot invoke procedure realmAuth/submitLogin [project Eticket] com.ibm.json.java.JSONObject cannot be cast to com.ibm.json.java.JSONArray

最佳答案

您的parameters数组的格式不正确。

你写道:

var parameters={
                'username':'username',
                'password':'password'
                };

Javascript 适配器需要一个未命名、有序的参数列表。不是 JSON 对象。

应该是:

var parameters = ['myUsername','myPassword']

您的适配器签名当然应该相应地更改,从函数submitLogin(parameters)函数submitLogin(用户名,密码)

关于javascript - FWLSE0013E : Cannot invoke procedure JSONObject cannot be cast to JSONArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36609444/

相关文章:

javascript - 多个嵌套 v-for 循环过滤唯一数据

javascript - 如何在javascript中的数组内使用 "this"关键字?

C++ - 将 rapidjson::Document 作为参数传递给函数

ibm-mobilefirst - 移动第一 8 : Unexpected error encountered while storing data

android - 在 mobilefirst ant 构建中控制 wlServerContext

javascript - 在 Worklight Adapter 中解析 XML 的方法是什么?

javascript - 将 angular2 页面预呈现为纯 HTML

javascript - ReactCSSTransitionGroup 不添加类

javascript - DIV 中支持 jQueryMobile 的站点

java - 如何清晰地输出一个JSONObject