2013-04-08 2 views
0

J'essaie d'utiliser un adaptateur HTTP pour envoyer un objet JSON via Post à un service backend implémenté en tant qu'API REST.Adaptateur HTTP Worklight - Utilisation avec HTTP POST et charge utile JSON

Plusieurs choses ne fonctionnent pas ou je le fais à tort. Les paramètres de requête ne sont pas transférés au fournisseur de services REST. Peu importe si je les ajoute au chemin ou à l'objet paramètres de l'appel.

L'adaptateur HTTP utilise toujours le codage de transfert en bloc qui n'est pas accepté par cette interface REST. Existe-t-il un moyen d'influencer le comportement de l'adaptateur HTTP?

Mon appel ressemble à ceci:

function doSomething(data1, data2, payload) { 
    var input = { 
     'method' : 'post', 
     'path' : '/myRESTAPI/SalesOrder', 
     'returnedContentType' : 'json', 

     'headers' : { 
      'Accept-Encoding': 'gzip,deflate', 
      'Content-Type': 'application/json' 
     }, 

     'parameters' : { 
      'data1' : data1, 
      'data2' : data2 
     }, 

     'body': { 
        'contentType' : 'application/json',   
        'content' : payload 
       } 

    }; 
     return WL.Server.invokeHttp(input); 
} 

Est-ce que vous voyez une erreur, je l'ai fait là-bas?

+0

Vous pouvez trouver la réponse ici: http://stackoverflow.com/questions/15340721/worklight-adapter/15346877#15346877 – rooftop

Répondre

1

Vous pouvez trouver la réponse ici: worklight adapter

En 5.0.5.x, invokeHttp prendra toutes les params fournies sur le chemin pour mettre et après et de les placer à l'intérieur du corps http au lieu d'avoir ils restent sur le chemin en tant que paramètres de requête (comme le développeur probablement destiné). Ce comportement sera mis à jour dans une version à venir, mais pour l'instant il n'y a aucun moyen de les forcer à rester en tant que paramètres de requête.

+0

Bonjour - merci pour la réponse rapide. Cela signifie que la variable de chemin ne contiendra plus les paramètres de requête mais qu'ils sont inclus dans le corps http. Que se passe-t-il dans ce cas s'il y a déjà un objet JSON que nous voulons POSTER avec le corps - sera-t-il conservé ou écrasé? Nous avons découvert que dès que nous ajoutons un paramètre body {} à la variable d'entrée, l'adaptateur HTTP WL passe à Transfer-Encoding: chunked - y a-t-il un moyen d'influencer cela? Tout paramètre de configuration? Juste en pensant aux API REST qui ne supportent pas cela. Dans ce cas, l'adaptateur HTTP WL devrait pouvoir s'adapter. –

+0

Autre commentaire - mise à niveau vers WorkLight 5.0.6 nous a aidé à échapper à certains comportements négatifs de la carte HTTP WL. Dans v5.0.6, ce problème de transfert-codage: segmenté ne se produit pas lorsque nous appelons l'adaptateur HTTP WL en utilisant le modèle fourni par WebSphere Message Broker pour les ressources mobiles. –