Comment utiliser les paramètres de la requête en Java Jersey Application?
Je suis à la suite d'un tutoriel et également utilisé le Stackoverflow question ici.
Voici ma classe Java:
package com.crunchify.tutorial;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Consumes;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.UriInfo;
import org.json.simple.JSONObject;
@Path("api")
public class CrunchifyAPI {
@SuppressWarnings("unchecked")
@GET
@Path("/get")
@Consumes(MediaType.TEXT_PLAIN)
public String get(
@DefaultValue("111") @QueryParam("user") int user,
@Context UriInfo uriInfo
) {
MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters();
String nameParam = queryParams.getFirst("user");
System.out.println("Data Received: " + uriInfo.getRequestUri().getQuery()
+ " | " + nameParam);
JSONObject obj = new JSONObject();
obj.put("auth", true);
String ret = JSONObject.toJSONString(obj);
return ret;
}
}
Qui suit est ce que je suis en OBTENIR un require de facteur:
GET>> localhost/api/get?user=123
Réponse est:
{"auth":true}
Console du serveur:
Starting Crunchify's Embedded Jersey HTTPServer...
Started Crunchify's Embedded Jersey HTTPServer Successfully !!!
Data Received: ?user=123 | null
User Authenticated: true
J'ai essayé avec le passage de la Chaîne, Entier, etc, mais rien ne fonctionne. L'uri de l'Info est arriver imprimées correctement, et la réponse est aussi très bien. Le problème est que je ne reçois pas le paramètre à lire dans du Code Java. J'ai besoin de passer de nombreuses autres paramètres une fois que je suis en mesure d'obtenir ce que ça va. S'il vous plaît suggérer. Merci!!
J'espère qu'elle sera imprimée suivante dans la console du serveur:
Data Received: ?user=123 | 123
de Même, plus tard je voudrais faire passer la Chaîne et (si possible, peut-être JSON).
OriginalL'auteur Amresh Kadian | 2017-01-04
Vous devez vous connecter pour publier un commentaire.
Je pense que vous essayez trop dur. Aussi loin que je peux dire, de faire ce qui suit devrait vous obtenir ce que vous voulez si vous appelez localhost/api/obtenir?utilisateur=123:
Tous que des trucs supplémentaires avec la chaîne de requête n'est pas nécessaire si vous n'avez besoin que l'information transmise dans le paramètre utilisateur.
OriginalL'auteur Nielsvh
@QueryParam("utilisateur") int utilisateur
la valeur de cet utilisateur int doit être 123
Voir https://www.mkyong.com/webservices/jax-rs/jax-rs-queryparam-example/
String nameParam = queryParams.getFirst("user"); System.out.println("Data Received: " + uriInfo.getRequestUri().getQuery() + " | " + nameParam);
j'ai même essayé de changer de type int en String et Integer. Rien ne fonctionne!essayez Système..println(utilisateur);
J'ai essayé et il imprime 111 au lieu de null, c'est à dire la valeur par défaut.
String nameParam = queryParams.getFirst("user"); System.out.println("Data Received: " + uriInfo.getRequestUri().getQuery() + " | " + nameParam); System.out.println(user);
Résultat:Data Received: ?user=aaaaa | null 111
--> doit être 123vous ne savez pas si le problème est le mélange de deux paradims, soit utiliser QueryParam ou UriInfo, nettoyer votre code, si nécessaire, de créer deux méthodes de test Voir mkyong.com/webservices/jax-rs/jax-rs-queryparam-example
OriginalL'auteur Kalpesh Soni
Bien, je pense que vous avez un problème avec les Types Java.
Si votre utilisateur est un
Integer
vous devriez passer àString
d'abord, si vous souhaitez travailler avec unString
(Integer.toString()
ouString.valueof()
).Mais la façon dont vous êtes en passant le paramètre me tracasse, je ne suis pas sûr si vous pouvez passer des entiers en texte brut medi types.
OriginalL'auteur