2010-09-09 9 views
1

exemple de code simplifié: http://pastebin.com/9ZQxSXi9org.restlet: La publication de contenu JSON contre webservice renvoie l'erreur HTTP 411 (longueur requise)

Salut

Je voulais expérimenter avec la bibliothèque 2.0 Restlet et le webservice gpodder mais en quelque sorte i atteint un point où je ne peux pas voir le bois pour les arbres. Le service de l'exemple nécessite une authentification HTTP et l'envoi d'un contenu JSON à une URL. Rien de compliqué, mais d'une manière ou d'une autre, même si la vue de débogage prétend que l'objet de requête contient le contenu nécessaire, la réponse de RESTful webservice me laisse croire que l'en-tête HTTP de la requête manquait le contenu.

Des idées sur quelle est la raison? Merci d'avance.

Répondre

1

Le problème est que rien de l'implémentation de WriterRepresentation que j'ai vu (JsonRepresentation, JacksonRepresentation, XStreamRepresentation) ne définit la taille de la représentation lorsqu'un objet est passé. Donc, si vous créez une nouvelle représentation de Jackson (carte), la taille n'est pas calculée.

Vous devez calculer manuellement la longueur du contenu de la carte et appeler Representation.setSize(). Ou, comme je l'ai fait, utilisez un

new JsonRepresentation ("a json string ...");

Ce constructeur est capable de calculer la taille, bien sûr, c'est la longueur de la chaîne, donc l'en-tête de longueur de contenu approprié est défini et tout fonctionne bien.