IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Comment executer une requete json avec java?


Sujet :

avec Java

  1. #1
    Membre régulier Avatar de stpaul04
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 271
    Points : 116
    Points
    116
    Par défaut Comment executer une requete json avec java?
    Bonjour,

    j'ai une web appilcation qui permet de generer un rapport, de le publier et de le telecharger en pdf.
    A chaque fois, je me connecte avec un username et password pour acceder a mon compte, puis je rentre des données et je peux ensuite générer un rapport que je peux télécharger en PDF.
    Donc ce fichier PDF est différent à chaque fois que je le génère puisque les données que je rentre seront differents et de ce fait l'URL de telechargement est dynamique et unique pour chaque fichier pdf.

    Ce que je voudrai faire, c'est de tester que mon fichier PDF est bien généré et existe bien.
    Donc la methode de télécharger le fichier par son URL ne fonctionne pas car il me téléchargera toujours le meme fichier.

    En cherchant sur Google, j'ai vu qu'il faut lancer une requete json en java pour connaitre la session id de la page actuel du telechargement.

    Comment faire pour lancer une requete json en java?
    ou peut-on le faire autrement?

    Le but ce n'est pas vraiment de télécharger le fichier mais de voir que ce fichier existe et qu'il est téléchargeable.

    Mais une ce tes passé, sur le fichier PDF, je pourrai faire d'autres tests comme vérifier sa tailler, son nom; sa date de création etc etc puis le supprimer.

    J'ai trouvé ceci sur google mais cela ne m'aide pas a trouver la sessin id:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
     
    import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.DefaultHttpClient;
     
    public class Post {
    	public static void main(String[] args) throws ClientProtocolException,
    			IOException {
    		HttpClient client = new DefaultHttpClient();
    		HttpPost post = new HttpPost("http://grooveshark.com/login");
    		StringEntity input = new StringEntity(
    				"{\"username\":\"Test\",\"paswword\":\"XXXX\"}"); // here
    																	// instead
    																	// of JSON
    																	// you can
    																	// also have
    																	// XML
    		input.setContentType("application/json");
     
    		post.setEntity(input);
    		HttpResponse response = client.execute(post);
    		BufferedReader rd = new BufferedReader(new InputStreamReader(response
    				.getEntity().getContent()));
    		String line = "";
    		while ((line = rd.readLine()) != null) {
    			System.out.println(line);
    		}
    	}
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
     
    import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.DefaultHttpClient;
     
    public class Test2 {
     
    	public static void main(String[] args) throws ClientProtocolException,
    			IOException {
    		HttpClient client = new DefaultHttpClient();
    		HttpGet request = new HttpGet("http://grooveshark.com/login");
    		HttpResponse response = client.execute(request);
    		BufferedReader rd = new BufferedReader(new InputStreamReader(response
    				.getEntity().getContent()));
    		String line = "";
    		while ((line = rd.readLine()) != null) {
    			System.out.println(line);
    		}
    	}
    }

    Merci

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par ssmano Voir le message

    Comment faire pour lancer une requete json en java?
    Première question: est-ce que le service web auquel tu veux te connecter est prévu pour accepter ce genre de requete? JSON c'est pas un outil magique, c'est juste un format d'encapsulation de données, comme xml, csv etc. C'est bien beau de générer un json, encore faut-il que le serveur sache quoi en faire. Donc première question: qu'est-ce qui est prévu sur le service web en question comme api pour l'interroger. Si tu ne sais pas, c'est qu'il n'y a probablement rien de prévu et tout ce que tu pourra faire c'est te faire passer pour un navigateur en allant de page en page, en parsant les réponse pour essayer d'y trouver les informations dont tu as besoin. bref une grosse soupe.

  3. #3
    Membre régulier Avatar de stpaul04
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 271
    Points : 116
    Points
    116
    Par défaut
    Tchize,

    je peux envoyer une requete json sur mon app
    Par exemple j'arrive a le faire avec SOAPUI:
    si je fais une requete:
    {
    "username": "username",
    "password": "password"
    }

    Je recois alors une reponse avec plusieurs lignes dont celle-ci comporte la session id

    Set-Cookie proteus-auth=N9v43TKce8AjDy1hgqOEzwX+nW929/DM1jp6SbflR........................................

    je veux faire la meme chose en utilisant Java tout simplement.

    Merci

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu veux dire que tu reçois des headers avec le cookie? T'as rien à faire de particulièrement compliquer pour le gérer. Tu utilise le client http commons de apache (comme dans ton exemple), tu envoie ta requête json, il stockera le cookie et ensuite avec le même objet client, tu envoie tes requêtes suivantes, qui feront partie, pour le serveur, de la même session.

  5. #5
    Membre régulier Avatar de stpaul04
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 271
    Points : 116
    Points
    116
    Par défaut
    Tchize,


    j'ai besoin de plus d'aide, est-ce-que c'est le premier code qui permet d'avoir le cookie ?

    quand tu dis :
    Tu utilise le client http commons de apache (comme dans ton exemple),
    OK

    tu envoie ta requête json,
    c'est à dire comme ceci ?
    StringEntity input = new StringEntity(
    "{\"username\":\"Test\",\"paswword\":\"XXXX\"}");


    il stockera le cookie
    dans quel objet?
    et ensuite avec le même objet client,
    l'objet client?
    tu envoie tes requêtes suivantes, qui feront partie, pour le serveur, de la même session.
    je ne sais pas

    Merci

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par ssmano Voir le message
    c'est à dire comme ceci ?
    StringEntity input = new StringEntity(
    "{\"username\":\"Test\",\"paswword\":\"XXXX\"}");
    Comme dans ton premier example (POST)


    Citation Envoyé par ssmano Voir le message
    dans quel objet?
    HttpClient

    Citation Envoyé par ssmano Voir le message
    l'objet client?
    Oui

    Citation Envoyé par ssmano Voir le message
    je ne sais pas
    Tu viens de poster deux exemples de code qui prouvent le contraire, tu sais comment envoyer des requêtes à un serveur. Suffit d'appliquer la même logique. Il faut juste un seul objet HttpClient, pas en faire un nouveau à chaque fois.

  7. #7
    Membre régulier Avatar de stpaul04
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 271
    Points : 116
    Points
    116
    Par défaut
    Je ne peux pas mettre cette discussion comme résolu.
    Je vais laissé ouvert jusqu'a ce que je trouve la bonne methode.

    merci

  8. #8
    Membre régulier Avatar de stpaul04
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 271
    Points : 116
    Points
    116
    Par défaut
    En fait j'ai trouvé pourquoi je n'arrive pas a obtenir la session id, le server ne me le renvoie pas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment executer une requete avec une boucle?
    Par medsine dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/05/2008, 14h45
  2. [C#] Comment executer une requete sql y compris @@IDENTITY ?
    Par maitesn1 dans le forum Accès aux données
    Réponses: 6
    Dernier message: 09/08/2006, 13h29
  3. Comment executer une requete sql delete dans une jsp ?
    Par DarkWark dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 24/05/2006, 16h59
  4. Comment faire une requete liée avec une requete ?
    Par DavidDeTroyes dans le forum Requêtes
    Réponses: 4
    Dernier message: 18/04/2006, 13h18
  5. [BDD] Comment Executer Une SP Mysql avec ADODB depuis PHP
    Par audreyc dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 30/03/2006, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo