Erreur lors de l'appel du service Web RESTful à l'aide de la méthode POST de Jersey Client

Obtenir une erreur en essayant de consommer un service web Restful en utilisant   Méthode POST (avec param de formulaire).

Je veux consommer une application REST en utilisant la méthode POST. Veuillez trouver ci-dessous la classe de ressources à laquelle je veux accéder.

@Path("/user")

Utilisateur de classe publique {

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response get(@FormParam("username") String userName,
        @FormParam("userid") String userId  ){

}

J'ai essayé d'employer Jesry Client pour accéder. Veuillez trouver ci-dessous le code que j'ai essayé. J'ai essayé d'ajouter des valeurs à FormParam comme indiqué ci-dessous.

Trail 1

WebResource webResource = client.resource("baseURL/user");

String input = "userid:1001,username:demo1";
ClientResponse response = webResource.type("application/x-www-form-urlencoded").post(ClientResponse.class, input);

Je reçois une réponse d'erreur "Le serveur a rencontré une erreur interne() qui l'a empêché de répondre à cette requête". Je ne pense pas que j'ajoute correctement les valeurs à FormParam.

Essai 2

J'ai également essayé d'ajouter la forme params en utilisant le code ci-dessous

MultivaluedMap formData = new MultivaluedMapImpl();
    formData.add("userid", "1001");
    formData.add("username", "demo1");
    ClientResponse response = webResource.type("application/x-www-form-urlencoded").post(ClientResponse.class, formData);

Cela a également entraîné la même erreur.

Essai 3

Form f = new Form();
    f.add("userid", "1001D");
    f.add("username", "1001D");

    ClientResponse response = webResource.type(MediaType.APPLICATION_FORM_URLENCODED_TYPE).post(ClientResponse.class, f);

Cela a également entraîné la même erreur. Any help is appreciated.

0
Avez-vous un stacktrace/message d'erreur/quoi que ce soit?
ajouté l'auteur Pavel Bucek, source

2 Réponses

Puisque votre erreur indique que "le serveur a rencontré une erreur interne", vous devez regarder le serveur (logs) pour voir ce qui s'est mal passé. Certes, votre troisième client a l'air bien d'atteindre le service que vous avez défini (en supposant que vous utilisez quelque chose de réel au lieu de la chaîne "baseURL").

Vous pouvez facilement tester votre serveur fonctionne séparément de votre client en créant une page HTML pour accéder au service. Créez un formulaire HTML en utilisant enctype = "application/x-www-form-urlencoded" et en publiant sur votre point de terminaison de service (ce que vous appelez "baseURL/user") avec les paramètres de formulaire userid et username. Lorsque vous affichez le formulaire HTML dans un navigateur et que vous cliquez sur le bouton "Envoyer", il appelle votre serveur. Si vous obtenez la même erreur, vous pouvez être sûr que cela n'a rien à voir avec votre code client.

0
ajouté
0
ajouté