RESTlet: Comment le processus de multipart/form-data demandes?
Comment pouvez-vous attraper entrant @variables Post quand c'est un multipart/form-data demande?
Pour une requête Post, je le ferais:
@Post
public void postExample(Representation entity) throws Exception{
Form form = new Form(entity);
System.out.println(form.getFirstValue("something"));
}
Mais parce que c'est un multipart/form-data demande ci-dessus sorties null
Je suis un Java débutant alors soyez gentil 🙂
PS: je ne suis pas intéressé dans le traitement des fichiers entrants, juste les champs de texte.
Pouvez-vous ajouter les données de formulaire html?
OriginalL'auteur Alex | 2009-06-15
Vous devez vous connecter pour publier un commentaire.
C'est une pâte obtenue à partir de l'une de mes méthodes (Restlet 2.0). Ici, j'ai un formulaire qui contient un fichier à télécharger, en plus d'autres champs, par conséquent, il est plutôt complet:
Je vais la refactorisation à quelque chose de plus générique, mais c'est ce que j'ai maintenant.
J'ai un @Post annotation (mais sans paramètres). Le paramètre limites de la représentation, vous acceptez (restlet.org/documentation/2.0/jse/api/org/restlet/resource/...). Le HTTP 405 est la méthode non autorisée (w3.org/Protocols/rfc2616/rfc2616-sec10.html) - Restlet peut ne pas reconnaître votre ressource comme "buchbar" si aucune @Post annotation est présente.
J'avais simplement comme @Poste, et il a continué à retourner une 405. Ensuite, j'ai ajouté ceci: getMetadataService().addExtension("multipart", MediaType.MULTIPART_FORM_DATA, true); les ressources constructeur, et a changé ma annotation de @Post, @Post("multipart") et il a ensuite travaillé.
OriginalL'auteur Carles Barrobés
pour emballer le tout sur une seule ligne, en vous Restlet classe de Ressource :
Iterator it = new RestletFileUpload(nouveau DiskFileItemFactory()).parseRequest(getRequest()).iterator();
Puis dans votre boucle par le biais de vos articles, vous pouvez vérifier si elles sont ou non fileItems de la méthode: isFormField().
Tester si un fileItem est un formField... fait sens ? 😉
mais il fonctionne.
Bonne chance.
OriginalL'auteur
Pour répondre à ma propre question, ce n'est pas faisable actuellement en version 1.2
OriginalL'auteur Alex