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

Développement Web en Java Discussion :

Insérer valeur dans champs de page web


Sujet :

Développement Web en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Développeur multimédia
    Inscrit en
    Mai 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2015
    Messages : 22
    Par défaut Insérer valeur dans champs de page web
    Bonjour à tous,

    Dans le cadre d'un projet, je développe une application. Dans l'une des classes, je dois me connecter à une page web et insérer une valeur dans le champ présent sur cette page puis lancer la recherche et insérer les valeurs de la recherche dans mon application.
    Voici mon problème, dans le code html de cette page, le "Rechercher" est un bouton et non un input et il ne posséde pas de name, je ne sais donc pas comment procéder.

    Voici mon code actuel qui ne fonctionne pas :

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    private String getResult() throws IOException{
            String html_result="";
            // On envoie un formulaire POST en renseignant les informations de connexion
            String url=this.url;
            Map<String, String> dataDiag = new HashMap<String, String>();
            dataDiag.put("ndi", ndi_vga);
            dataDiag.put("bt1", "Rechercher");
            // URL
            URL urlDiag =new URL(null, url,new sun.net.www.protocol.https.Handler());
            // Création de la connexion
            HttpsURLConnection connDiag = (HttpsURLConnection) urlDiag.openConnection();
            connDiag.setRequestMethod("POST");
            connDiag.setRequestProperty("Connection","keep-alive");
            connDiag.setDoOutput(true);
            connDiag.setDoInput(true);
            connDiag.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0");
            DataOutputStream outDiag=null;
            try {
                outDiag = new DataOutputStream(connDiag.getOutputStream());
            } 
            catch (IOException e) {
                // TODO Auto-generated catch block
                html_result="erreur proxy";
                //e.printStackTrace();
            }
            Set keysDiag = dataDiag.keySet();
            Iterator keyIterDiag = keysDiag.iterator();
            String contentDiag = "";
            for(int i=0; keyIterDiag.hasNext(); i++){
                Object key = keyIterDiag.next();
                if(i!=0)
                    contentDiag += "&";
                contentDiag += key + "=" + URLEncoder.encode(dataDiag.get(key), "UTF-8");
            }
            outDiag.writeBytes(contentDiag);
            outDiag.flush();
            outDiag.close();
            // On met le résultat en mémoire
            BufferedReader in = new BufferedReader(new InputStreamReader(connDiag.getInputStream()));
            String lineDiag = "";
            // On assigne le résultat à la chaine html_result
            while((lineDiag=in.readLine())!=null)
                html_result+=lineDiag;
            in.close();
            // On récupére le contenu de la page
            // Si c'est du SDSL, le code source contiendra "numero_ip_geo"
            return html_result;
        }
     
        public void parseHtml(String arg0){
            // On cherche une information dans le code HTML
            // Elle se trouve entre pattern1 et pattern2
            String pattern1="<div class=\"tableau_activation tableau\" id=\"saphir\">";
            String pattern2="</div>";
            String regexString = Pattern.quote(pattern1) + "(.*?)" + Pattern.quote(pattern2);
            Pattern pattern = Pattern.compile(regexString);
            Matcher matcher = pattern.matcher(arg0);
            String textInBetween="";
            while (matcher.find())
                textInBetween = matcher.group(1);
            String textToParse="<div>"+textInBetween+"</div>";
            Document doc=Jsoup.parse(textToParse);
            rows = doc.select("div class");
            Elements nameTds=rows.get(0).select("div id");
            for (int i=0;i<nameTds.size();i++){
                cols.add(nameTds.get(i).text());
            }
        }

    Voici un aperçu de la page HTML en question et de son code :

    Nom : cccccc.PNG
Affichages : 342
Taille : 33,5 Ko


    Je vous remercie d'avance, j'ai épuise tous les liens web possibles et imaginables mais sans grand résultat.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Au lieu de chercher à manipuler le html, tu devrais simplement poster (ou en get, si le service ne fonctionne pas en post) sur l'URL qui est utilisée pour faire l'action (elle doit être référencée dans le script qui est réduit dans le form). Tu relèves tous les input du form, ce qui te donne le nom des paramètres, que tu passes dans le header de la requête post. Ensuite le flux résultat tu pourras le parser avec un parser html (par exemple jsoup) pour récupérer ton résultat.

    (Au passage, au lieu de donner une copie d'écran, un copier/coller du html entre balises CODE, serait mieux, plus pratique pour nous en tout cas pour te donner une réponse plus précise).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre averti
    Femme Profil pro
    Développeur multimédia
    Inscrit en
    Mai 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2015
    Messages : 22
    Par défaut
    Bonjour joel.drigo et merci de ta réponse,

    Mon problème c'est que pour lancer la recherche, il faut cliquer sur "Rechercher" qui lui est un button et non un input.
    Je ne vois donc pas comment faire :/
    Il n'y a également aucune URL dans le script, pas de redirection. Je ne comprends pas.

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    <body onkeypress="javascript:ActionTouche(event)">
     
    	<div>
    		<span id="logosfr"></span><span id="logotitre"></span><br/><br/><br/>
    	</div><br/><br/><br/><br/>
    <table class='sansbordure'><tr><td class='sansbordure'><a href='../../index.php'>Menu principal</a></td><td class='sansbordure'> >Etat reseau VOIX</td></tr></table>	
    	<center>
    		<br>
    		<div id="div_ndi">
    			<form name="form" id="form" action="" method="" onsubmit="return false;">
    				NDI&nbsp;&nbsp;: <input type='text' id='ndi' name='ndi' size=10>
    				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    				<button id="bt1">Rechercher</button>
    				<script>
    					$("#bt1").mousedown(function() {
    						$(".sablier").show();
    					});
    					$("#bt1").click(function() {
    						verificationNdi();
    					});
    				</script>
    			</form>
    		</div>
    		<br><br>
    		<div class='titre_reseau'>Customer Relationship Management - CRM</div>
    		<br>
    		<div class='tableau_crm tableau' id="crm"></div>
    		<br>
    		<div class='titre_reseau'>Dégroupage</div>
    		<br>
    		<div class='tableau_degroupage tableau' id='cerbere'></div>
    		<br><br>
    		<HR width="80%">
    		<div class='titre_reseau'>Synthése Réseau - Voix indirecte</div>
    		<br>
    		<div class='tableau_activation  tableau' id='saphir'></div>
    		<br><br><br><br>
    		<div id='historiques'></div>
    		<HR width="80%">
    		<div class='titre_reseau'>Détails</div>
    		<br>
    		<div class='tableau_details tableau' id='details'></div>
    	</center>
    	<!------------------------------------------------------------------------------------------
    	<!--                          sablier
    	------------------------------------------------------------------------------------------->
    	<div id="waitDiv" class="sablier" style="display:none"><img src="../../images/please_wait.gif" alt="Please Wait" /></div>
     
    	<marquee scrolldelay="200" scrollamount="2" width="100%" direction"left" behavior="alternate" bgcolor="#FFFFFF">
    <br><h2>si les menus ne s'affichent pas sous IE11, aller dans rouage, paramètres d'affichage de compatibilité, décocher afficher les sites intranet dans affichage de compatibilité</h2>
    <br></marquee>
    <br><br></body>

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $("#bt1").click(function() {
        verificationNdi();
    });

    Il y a un script (dans le head, ou importé) qui définit cette fonction verificationNdi() : que fait-il ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre averti
    Femme Profil pro
    Développeur multimédia
    Inscrit en
    Mai 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2015
    Messages : 22
    Par défaut
    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
    function verificationNdi() {
     
    	/* suppression des caractères spéciaux */
    	var numero=$('#ndi').val();
    	numero=numero.replace(/(-|\.|\/|\s|,)/g, "");
     
     
    	if ( !is_numeric(numero) || numero.length < 9 || (numero.length ==9 && numero.substr(0,1)=='0') || numero.length ==10 && numero.substr(0,1)!='0' ) {
     
    		alert('Ndi non conforme : '+numero);
    		return false;
    	}
     
    	/* suppression du zero de début si besoin*/
    	numero=numero.replace(/^0/, "");
    	$('#ndi').val(numero);
     
    	var type_action='nopopup';
     
    	etat_reseau('crm',type_action);
    	etat_reseau('cerbere',type_action);
    	etat_reseau('saphir',type_action);
    	etat_reseau('details',type_action);
     
    	$(".sablier").hide();
     
    	return true;
    }
    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
    function etat_reseau(nom_applicatif,type_action) {
     
    	var url =nom_applicatif+".php";
    	var parametre='ndi='+$('#ndi').val();
     
    	$.ajax({
    		type: "POST",
    		url: url,
    		data: parametre,
    		async:false,
    		success: function(data) {
     
    			// décryptage de la réponse
    			traitement_reponse(data,nom_applicatif,type_action);
    			$("body").css("cursor", "auto");
    		},
    		error: function(obj,textStatus,msg) {
     
    			// affichage du menu
    		    alert(textStatus+'-'+msg);
    		}
    	});
    }
    Il y a :
    var url =nom_applicatif+".php";
    mais cela ne m'aide pas vraiment.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Ouais, ça a l'air siouxe, avec plusieurs requêtes et un traitement javascript de la réponse. nom_applicatif, on le connait, c'est le paramètre de etat_reseau (crm, cerbere, saphir, details). Faudrait voir la réponse de ces requêtes et la complexité du traitement de ces réponses. Mais je pense qu'il faut envisager d'utiliser quelque chose comme HtmlUnit (un browser headless) : le bouton rechercher peut être retrouver par son id, mais tu dois pouvoir aussi directement invoquer la fonction verificationNdi.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Insérer signature (tablet pc, et page web dynamique) dans un formulaire
    Par gruick_rob dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 10/03/2009, 18h01
  2. Valeur dans champ formulaire
    Par dbi dans le forum Access
    Réponses: 5
    Dernier message: 18/02/2006, 01h18
  3. 3 boutton submit dans une seule page web
    Par jack_1981 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/01/2006, 12h37
  4. Valeur dans champ?
    Par Gebudi. dans le forum Access
    Réponses: 7
    Dernier message: 01/01/2006, 17h27
  5. [C#] Recuperation de valeur dans une autre page
    Par kenzo080 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 02/06/2004, 10h32

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