IBM MobileFirst 7.0 - Сбой при вызове процедуры адаптера с REST API
Я пытаюсь извлечь данные из HTTP-адаптера, используя новый REST API.
это некоторые из моих возвращенных объектов JSON:
"items": [
{
"category": "category 1",
"produit": [
{
"id": "57",
"name": "this is my name",
"answer": [
{
"id": "146",
"answername": " answer 1",
"istrue": "0",
"questionid": "57"
},
{
"id": "147",
"answername": "answer 2",
"istrue": "0",
"questionid": "57"
}
]
}
]
}
]
Когда я вызываю процедуру, используя WL.Client.invokeProcedure(invocationData, options);
это работает отлично.
var invocationData = {
adapter : 'AuthentificationAdapter',
procedure : 'getquestion',
parameters : [jsontab],
};
WL.Client.invokeProcedure(invocationData,{
onSuccess : $.proxy(function(data)
{
deferred.resolve(data.invocationResult.items);
},this),
onFailure : $.proxy(function(error)
{
deferred.reject(error);
},this)
});
return deferred.promise
Но когда я использовал REST API, он возвращается с Failed to read the HTTP response
а также Failed to parse JSON string
вот мой код запроса ресурса:
var resourceRequest = new WLResourceRequest("/adapters/AuthentificationAdapter/getquestion", WLResourceRequest.POST, 30000);
resourceRequest.setQueryParameters(jsontab);
resourceRequest.send().then(
$.proxy(function(data) {
deferred.resolve(data.responseJSON.items);
},this),
$.proxy(function(error) {
deferred.reject(error);
},this)
);
return deferred.promise;
Кажется, что REST API не поддерживает полный объект JSON в качестве возврата, как это делает WL.Client?
1 ответ
WL.Client.invokeProcedure
возвращает обещание, поэтому вы должны использовать следующее (для первой части) вместо реализации собственного.
var invocationData = {
adapter : 'AuthentificationAdapter',
procedure : 'getquestion',
parameters : [jsontab],
};
return WL.Client.invokeProcedure(invocationData);
WLResourceRequest.send
также возвращает обещание, поэтому вы должны использовать
var resourceRequest = new WLResourceRequest("/adapters/AuthentificationAdapter/getquestion", WLResourceRequest.GET, 30000);
resourceRequest.setQueryParameter('params', [jsontab]);
return resourceRequest.send();
Обратите внимание, что вы должны использовать setQueryParameter
и в качестве первого аргумента вы должны передать 'params'
и как второй массив, содержащий все аргументы для функции адаптера.
К вашему сведению: я предполагаю, что предыдущие два фрагмента кода находятся внутри функции, и поэтому я возвращаю обещание, как вы делали раньше.