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

API standards et tierces Java Discussion :

java.net taper une ressource avec délai


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Par défaut java.net taper une ressource avec délai
    Bonjour,

    Alors voilà, j'ai une URL.
    Je veux m'y connecter.

    Donc le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    URL url = new URL (_url);
    HttpURLConnection connection = (HttpURLConnection)url.openConnection();
    connection.connect();
    Jusqu'ici tout va bien.
    Maintenant, si j'accéde via navigateur à cette URL, mon navigateur attend une réponse très très très longtemps avant de recevoir un code d'erreur : 502

    Dans mon programme, si je fais par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    URL url = new URL (_url);
    HttpURLConnection connection = (HttpURLConnection)url.openConnection();
    connection.connect();
    connection.getContent();
    Donc j'essaye de récupérer la réponse, là aussi mon programme attend très longtemps.
    En gros j'aimerai fixer un délai d'attente, si le délai est dépassé, je renvoie une exception.
    Alors j'ai tenté de setter le timeout à une petite valeur (60 ms), et ça n'a rien changé ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    URL url = new URL (_url);
    HttpURLConnection connection = (HttpURLConnection)url.openConnection();
    connection.setConnectTimeout(60);
    connection.connect();
    connection.getContent();
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    vraisemblablement, vous n'avez pas de timeout à la connexion (le serveur répond tout de suite), mais il met un long moment à savoir ce qu'il va mettre dans la réponse.

    regardez du coté de commons http client de apache. Il dispose de plusieurs paramètres comme http.connection.timeout, http.socket.timeout, http.connection-manager.timeout

  3. #3
    Membre éclairé
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Par défaut
    Merci, je vais regarder cette piste.
    Par contre, je n'arrive pas à télécharger le jar via maven ...

    J'ai bien ajouté la dépendance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <dependency>
    	    <groupId>org.apache.httpcomponents</groupId>
    	    <artifactId>httpcomponents-core</artifactId>
    	    <version>4.1</version>
    	</dependency>
    Mais j'ai le message suivant :
    Missing artifact org.apache.httpcomponents:httpcomponents-core:jar:4.1:compile
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

  4. #4
    Membre éclairé
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Par défaut
    Bon c'est bon, ça passe.
    Ca doit être le repo qui a eu une petite panne ...
    Ou ma connection qui chie va savoir.
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

  5. #5
    Membre éclairé
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Par défaut
    Donc j'ai le code suivant qui me permet de récupérer le contenu d'une réponse http.
    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
     
    public String extractFullContent(String _url)
    	{
    		String response_content = null ;
    		HttpClient httpclient = new DefaultHttpClient();
    		HttpGet httpget = new HttpGet(_url);
    		try
    		{
    			ResponseHandler<String> responseHandler = new BasicResponseHandler();
                            String responseBody = httpclient.execute(httpget, responseHandler);
                            if(responseBody != null) 
                            {
                             	response_content = responseBody ;
                            }
    		}
    		catch (ClientProtocolException e) 
    		{
    			System.out.println("[HTMLPage] url : " + _url + " doesn't support GET requests !!! ");
    			URL = "not a valid URL" ;
    			e.printStackTrace();
    		}
    		catch (IOException e) 
    		{
    			System.out.println("[HTMLPage] url : " + _url + " send no data !!! Not responding ... ");
    			URL = "not a valid URL" ;
    			e.printStackTrace();
    		}
    		finally
    		{
    			return response_content ;
    		}
    	}
    Maintenant, comment pourrai-je limiter le temps d'exécution de cette méthode ? je voudrais fixer un délai en gros.
    J'ai pas fini de lire la doc de httpClient ...
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    regardez la doc de HttpClientParams qu'on peux passer en paramètre au constructeur de la classe httpclient

    Il y a de quoi jouer sur énormément de paramètres

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

Discussions similaires

  1. Probléme: un client java qui consomme une array avec soap
    Par mejdi331 dans le forum Services Web
    Réponses: 1
    Dernier message: 28/01/2009, 16h54
  2. Réponses: 2
    Dernier message: 10/10/2008, 00h37
  3. [Java/String] Completer une chaine avec un caractere
    Par shaun_the_sheep dans le forum Langage
    Réponses: 4
    Dernier message: 31/05/2005, 09h01
  4. [VB.NET] Compléter une chaine avec des espaces
    Par Lois dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/03/2005, 09h09
  5. [VB.NET] Remplir une ComboBox avec une requete sql
    Par graphicsxp dans le forum Windows Forms
    Réponses: 6
    Dernier message: 22/03/2005, 15h29

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