FWLSE0013E: 无法调用过程 JSONObject 无法转换为 JSONArray
FWLSE0013E: Cannot invoke procedure JSONObject cannot be cast to JSONArray
我在名为 login 的 IBM Mobile 第一个应用程序中有一个客户端功能
我从这个 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']
您的适配器签名当然应该相应地更改,从 function submitLogin(parameters)
到 function submitLogin(username,password)
。
我在名为 login 的 IBM Mobile 第一个应用程序中有一个客户端功能 我从这个 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']
您的适配器签名当然应该相应地更改,从 function submitLogin(parameters)
到 function submitLogin(username,password)
。