2015-04-07 3 views
1

Я пытаюсь получить данные из HTTP-адаптера с использованием нового REST API.
это некоторые из моих объектов JSON вернулся:IBM MobileFirst 7.0 - Вызов процедуры адаптера с ошибкой REST API

"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?

+0

принадлежит к старому RPC. вы уверены, что REST API поддерживает такие результаты, как дерево JSON? – Wessim

ответ

2

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' и как второй массив, содержащий все аргументы для функции адаптера.

FYI: Я предполагаю, что предыдущие два фрагмента кода находятся внутри функции, и именно поэтому я возвращаю обещание так же, как и раньше.

+0

, который решил проблему, это была просто синтаксическая ошибка, спасибо – Wessim

+0

Убедитесь, что вы поставили вопрос как ответ, если проблема устранена. спасибо –

+0

одна последняя вещь, сделал ressourceRequest.send() возвратить обещание автоматически, чтобы я мог обработать его позже, когда я вызываю функцию? – Wessim

Смежные вопросы