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

Entrée/Sortie Java Discussion :

Problème de POST HTTP et de réponse


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 150
    Points : 45
    Points
    45
    Par défaut Problème de POST HTTP et de réponse
    Bonjour a tous,

    depuis une semaine déjà je rame un peu et malgré plusieurs recherche je n'arrive pas a résoudre mon souci.
    en gros voila, de bric et de broc j'essaie en vain de faire une requête http post sur un site afin de recuperer des informations (ici des NOTAMs terrains pour ce qui connaisse l'aéronautique )

    Quand j'effectue cette demande par le site postman, j'arrive a obtenir les infos que je souhaite.
    quand je transpose et code cette requete en java via NETBEANs IDE 11.1, je n'arrive pas a obtenir ce que je veux.

    je précise que je souhaite le résultat sous forme de xml pour plus tard le traiter et en extraire juste les infos finales.

    pourriez vous me dire ce qui ne va pas dans mon code s'il vous plait?

    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
     
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package httpsrequesttest;
     
    import java.io.BufferedReader;
    //import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import javax.net.ssl.HttpsURLConnection;
    import java.net.URL;
     
    public class HttpURLConnectionExample {
     
    	//private static final String USER_AGENT = "google";
            private static final String ICAO = "LFBO LFMK";
            private static final String REPORTTYPE = "Raw";
            private static final String ACTIONTYPE = "notamRetrievalByICAOs";
            private static final String BUTTON = "Check All NOTAMs";
            private static final String SUBMIT = "View NOTAMs";
     
    	private static final String POST_URL = "https://www.notams.faa.gov/dinsQueryWeb/queryRetrievalMapAction.do";
     
    	private static final String POST_PARAMS = "POST";
     
    	public static void main(String[] args) throws IOException {
     
    		sendPOST();
    		System.out.println("POST DONE");
    	}
     
    	private static void sendPOST() throws IOException {
    		URL obj = new URL(POST_URL);
    		HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
    		con.setRequestMethod("POST");
    		//con.setRequestProperty("User-Agent", USER_AGENT);
                    con.setRequestProperty("retrieveLocId", ICAO );
                    con.setRequestProperty("reporType", REPORTTYPE );
                    con.setRequestProperty("actionType", ACTIONTYPE );
                    con.setRequestProperty("button", BUTTON );
                    con.setRequestProperty("submit", SUBMIT );
                    con.
     
    		// For POST only - START
    		con.setDoOutput(true);
                try //(DataOutputStream os = new DataOutputStream( con.getOutputStream())) {
                    // wr.write(POST_PARAMS);
     
     
     
                    (OutputStream os = con.getOutputStream()) {
                    os.write(POST_PARAMS.getBytes());
                    //os.flush();
                    // For POST only - END
                }
     
    		int responseCode = con.getResponseCode();
    		System.out.println("POST Response Code :: " + responseCode);
     
    		if (HttpsURLConnection.HTTP_OK == responseCode) { 			StringBuffer response;
                    try ( //success
                            BufferedReader in = new BufferedReader(new InputStreamReader(
                                    con.getInputStream()))) {
                        String inputLine;
                        response = new StringBuffer();
                        while ((inputLine = in.readLine()) != null) {
                            response.append(inputLine);
                        }
                    }
     
                    //print result
                    System.out.println(response.toString());
                    } else {
                        System.out.println("POST request not worked");
                    }
    	}
     
        void sendGet() {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }
     
        void sendPost() {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }
     
    }
    il me sort bien un résultat mais pas ce que je souhaite.

    J'ai pourtant bien inspecter la page web pour en récupérer les bonnes "KEY" et "VALUE" mais je pense que j'ai zappé une code.

    Par avance merci pour votre aide.

    Amicalement

  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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Cela me semble plus être un problème de requête par rapport à ce que le site traite que de Java. Encore que dans ton code, les paramètres sont mal transmis. En tout cas la réponse obtenue est du html pas du xml... La réponse que tu obtiens sous postman est du xml ? Est-ce que tu peux nous montrer la requête faite sous postman, en curl par exemple.

    Pour le passage de paramètres, il faut les passer dans le body en application/x-www-form-urlencoded et surtout préciser le Content-Length. setRequestProperty c'est pour passer des headers, pas des paramètres.

    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
    	public static void post(HttpURLConnection con, Map<String, Object> parameters, Charset charset) throws IOException {
     
    		con.setRequestMethod("POST");
    		StringBuilder postdata = new StringBuilder();
    		for (Map.Entry<String, Object> parameter : parameters.entrySet() ) {
    			if (postdata.length() != 0) {
    				postdata.append('&');
    			}
    			postdata.append(URLEncoder.encode(parameter.getKey(), charset));
    			postdata.append('=');
    			postdata.append(URLEncoder.encode(String.valueOf(parameter.getValue()), charset));
    		}
    		byte[] content = postdata.toString().getBytes(charset); 
    		con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    		con.setRequestProperty("Content-Length", String.valueOf(content.length));
    		con.setDoOutput(true);
    		try (OutputStream outputstream = con.getOutputStream()) {
    			outputstream.write(content);
    		}
     
    	}
    Et pour l'appeler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Map<String,Object> parameters = new LinkedHashMap<>();
    		parameters.put("retrieveLocId", ICAO);
    		parameters.put("reporType", REPORTTYPE);
    		parameters.put("actionType", ACTIONTYPE);
    		parameters.put("button", BUTTON);
    		parameters.put("submit", SUBMIT);
    		post(con,parameters,StandardCharsets.ISO_8859_1);
    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 du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 150
    Points : 45
    Points
    45
    Par défaut
    bonsoir Joel,

    tout d'abord merci de prendre le temps de me repondre.
    ci-dessous le requete envoyée depuis postman en curl comme demandé.

    par la suite peux- me dire ou je dois placer les parties de codes que tu as joins dans ta réponse? car qd j'essai il me retourne une erreur. (pardonne moi je suis super novice et j'apprends au coup par coup

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    curl -X POST \
      https://www.notams.faa.gov/dinsQueryWeb/queryRetrievalMapAction.do \
      -H 'Content-Type: text/plain' \
      -H 'Postman-Token: 0d450bc8-84fd-4e91-96fa-8ba5d313f15c' \
      -H 'cache-control: no-cache' \
      -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
      -F retrieveLocId=lfbo \
      -F reportType=Raw \
      -F actionType=notamRetrievalByICAOs

  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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par K2carca Voir le message
    peux- me dire ou je dois placer les parties de codes que tu as joins dans ta réponse?
    Voici ton code, où j'ai surligné les parties que j'ai modifiées (ajout de mon code et mise en commentaire du tien en trop) :

    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
     
     
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package httpsrequesttest;
     
    import java.io.BufferedReader;
    //import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import javax.net.ssl.HttpsURLConnection;
    import java.net.URL;
    
    import java.net.URLEncoder;
    import java.nio.charset.Charset;
    import java.nio.charset.StandardCharsets;
    import java.util.LinkedHashMap;
    import java.util.Map;
     
    public class HttpURLConnectionExample {
     
    	//private static final String USER_AGENT = "google";
            private static final String ICAO = "LFBO LFMK";
            private static final String REPORTTYPE = "Raw";
            private static final String ACTIONTYPE = "notamRetrievalByICAOs";
            private static final String BUTTON = "Check All NOTAMs";
            private static final String SUBMIT = "View NOTAMs";
     
    	private static final String POST_URL = "https://www.notams.faa.gov/dinsQueryWeb/queryRetrievalMapAction.do";
     
    	//. private static final String POST_PARAMS = "POST";
     
    	public static void main(String[] args) throws IOException {
     
    		sendPOST();
    		System.out.println("POST DONE");
    	}
     
    	private static void sendPOST() throws IOException {
    		URL obj = new URL(POST_URL);
    		HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
    		/*con.setRequestMethod("POST");
    		//con.setRequestProperty("User-Agent", USER_AGENT);
                    con.setRequestProperty("retrieveLocId", ICAO );
                    con.setRequestProperty("reporType", REPORTTYPE );
                    con.setRequestProperty("actionType", ACTIONTYPE );
                    con.setRequestProperty("button", BUTTON );
                    con.setRequestProperty("submit", SUBMIT );
                    con. 
     
    		// For POST only - START
    		con.setDoOutput(true);
                try //(DataOutputStream os = new DataOutputStream( con.getOutputStream())) {
                    // wr.write(POST_PARAMS);
     
     
     
                    (OutputStream os = con.getOutputStream()) {
                    os.write(POST_PARAMS.getBytes());
                    //os.flush();
                    // For POST only - END
                }*/
     
                    
                    Map<String,Object> parameters = new LinkedHashMap<>();
    		parameters.put("retrieveLocId", ICAO);
    		parameters.put("reporType", REPORTTYPE);
    		parameters.put("actionType", ACTIONTYPE);
    		parameters.put("button", BUTTON);
    		parameters.put("submit", SUBMIT);
    		post(con,parameters,StandardCharsets.ISO_8859_1);
                    
    
    		int responseCode = con.getResponseCode();
    		System.out.println("POST Response Code :: " + responseCode);
     
    		if (HttpsURLConnection.HTTP_OK == responseCode) { 			StringBuffer response;
                    try ( //success
                            BufferedReader in = new BufferedReader(new InputStreamReader(
                                    con.getInputStream()))) {
                        String inputLine;
                        response = new StringBuffer();
                        while ((inputLine = in.readLine()) != null) {
                            response.append(inputLine);
                        }
                    }
     
                    //print result
                    System.out.println(response.toString());
                    } else {
                        System.out.println("POST request not worked");
                    }
    	}
    
        
    
        
    public static void post(HttpURLConnection con, Map<String, Object> parameters, Charset charset) throws IOException {
     
    		con.setRequestMethod("POST");
    		StringBuilder postdata = new StringBuilder();
    		for (Map.Entry<String, Object> parameter : parameters.entrySet() ) {
    			if (postdata.length() != 0) {
    				postdata.append('&');
    			}
    			postdata.append(URLEncoder.encode(parameter.getKey(), charset));
    			postdata.append('=');
    			postdata.append(URLEncoder.encode(String.valueOf(parameter.getValue()), charset));
    		}
    		byte[] content = postdata.toString().getBytes(charset); 
    		con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    		con.setRequestProperty("Content-Length", String.valueOf(content.length));
    		con.setDoOutput(true);
    		try (OutputStream outputstream = con.getOutputStream()) {
    			outputstream.write(content);
    		}
    
    	}
        
    
        void sendGet() {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }
     
        void sendPost() {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }
    }
    Il est important d'appeler la méthode post() après avoir passé tous les headers (appel de setRequestProperty) et de ne plus rien écrire après.

    Citation Envoyé par K2carca Voir le message
    ci-dessous le requete envoyée depuis postman en curl comme demandé.
    Tu ne m'as pas dit si tu recevais bien du XML sous postman. Parce que les spécificités tu cas n'expliquent pas que tu obtiennes du XML alors que j'obtiens du HTML. Bon, ce curl me semble un peu foireux, mais ça c'est postman, bien qu'il fonctionne et qu'il me renvoit du HTML ! Pareil si je transmets mes paramètres en multipart/formdata en Java...
    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 du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 150
    Points : 45
    Points
    45
    Par défaut
    il me dit "incompatible types: Charset cannot be be converted to String"
    Dois je remplacer charset (souligné dans le code par un autre élément ?

  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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Tu as dû modifier le code en recopiant...

    Ici le type de charset est java.nio.charset.Charset
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static void post(HttpURLConnection con, Map<String, Object> parameters, Charset charset) throws IOException {
    Dans l'appel, le type est compatible : post(con,parameters,StandardCharsets.ISO_8859_1);Dans les invocations qui utilisent le paramètre, idem :
    1. postdata.append(URLEncoder.encode(parameter.getKey(), charset));
    2. postdata.append(URLEncoder.encode(String.valueOf(parameter.getValue()), charset))
    3. byte[] content = postdata.toString().getBytes(charset);


    Donc si l'exemple a été copié fidèlement tu ne peux pas avoir cette erreur...
    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.

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 150
    Points : 45
    Points
    45
    Par défaut
    je t'assure avoir recopier ton code corrigé en faisant CTRL A : CTRLV pourtant et ne rien avoir modifier, a la rigeur comme ma connexion est httpS j'ai juste rajouté le S la ou il manquait =

  8. #8
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Pourtant si je fais la même chose (ctrl-c.ctrl-v), à part l'import
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import 
    import java.net.HttpURLConnection;
    manquant, je n'ai aucune erreur !

    Tu n'as qu'à mettre ton code dans ton prochain message, juste tel quel.
    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.

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 150
    Points : 45
    Points
    45
    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
    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
     
     
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package httpsrequesttest;
     
    import java.io.BufferedReader;
    //import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import javax.net.ssl.HttpsURLConnection;
    import java.net.URL;
     
    import java.net.URLEncoder;
    import java.nio.charset.Charset;
    import java.nio.charset.StandardCharsets;
    import java.util.LinkedHashMap;
    import java.util.Map;
     
    public class HttpURLConnectionExample {
     
    	//private static final String USER_AGENT = "google";
            private static final String ICAO = "LFBO LFMK";
            private static final String REPORTTYPE = "Raw";
            private static final String ACTIONTYPE = "notamRetrievalByICAOs";
            private static final String BUTTON = "Check All NOTAMs";
            private static final String SUBMIT = "View NOTAMs";
     
    	private static final String POST_URL = "https://www.notams.faa.gov/dinsQueryWeb/queryRetrievalMapAction.do";
     
    	//. private static final String POST_PARAMS = "POST";
     
    	public static void main(String[] args) throws IOException {
     
    		sendPOST();
    		System.out.println("POST DONE");
    	}
     
    	private static void sendPOST() throws IOException {
    		URL obj = new URL(POST_URL);
    		HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
    		/*con.setRequestMethod("POST");
    		//con.setRequestProperty("User-Agent", USER_AGENT);
                    con.setRequestProperty("retrieveLocId", ICAO );
                    con.setRequestProperty("reporType", REPORTTYPE );
                    con.setRequestProperty("actionType", ACTIONTYPE );
                    con.setRequestProperty("button", BUTTON );
                    con.setRequestProperty("submit", SUBMIT );
                    con. 
     
    		// For POST only - START
    		con.setDoOutput(true);
                try //(DataOutputStream os = new DataOutputStream( con.getOutputStream())) {
                    // wr.write(POST_PARAMS);
     
     
     
                    (OutputStream os = con.getOutputStream()) {
                    os.write(POST_PARAMS.getBytes());
                    //os.flush();
                    // For POST only - END
                }*/
     
     
                    Map<String,Object> parameters = new LinkedHashMap<>();
    		parameters.put("retrieveLocId", ICAO);
    		parameters.put("reporType", REPORTTYPE);
    		parameters.put("actionType", ACTIONTYPE);
    		parameters.put("button", BUTTON);
    		parameters.put("submit", SUBMIT);
    		post(con,parameters,StandardCharsets.ISO_8859_1);
     
     
    		int responseCode = con.getResponseCode();
    		System.out.println("POST Response Code :: " + responseCode);
     
    		if (HttpsURLConnection.HTTP_OK == responseCode) { 			StringBuffer response;
                    try ( //success
                            BufferedReader in = new BufferedReader(new InputStreamReader(
                                    con.getInputStream()))) {
                        String inputLine;
                        response = new StringBuffer();
                        while ((inputLine = in.readLine()) != null) {
                            response.append(inputLine);
                        }
                    }
     
                    //print result
                    System.out.println(response.toString());
                    } else {
                        System.out.println("POST request not worked");
                    }
    	}
     
     
     
     
    public static void post(HttpURLConnection con, Map<String, Object> parameters, Charset charset) throws IOException {
     
    		con.setRequestMethod("POST");
    		StringBuilder postdata = new StringBuilder();
    		for (Map.Entry<String, Object> parameter : parameters.entrySet() ) {
    			if (postdata.length() != 0) {
    				postdata.append('&');
    			}
    			postdata.append(URLEncoder.encode(parameter.getKey(), charset));
    			postdata.append('=');
    			postdata.append(URLEncoder.encode(String.valueOf(parameter.getValue()), charset));
    		}
    		byte[] content = postdata.toString().getBytes(charset); 
    		con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    		con.setRequestProperty("Content-Length", String.valueOf(content.length));
    		con.setDoOutput(true);
    		try (OutputStream outputstream = con.getOutputStream()) {
    			outputstream.write(content);
    		}
     
    	}
     
     
        void sendGet() {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }
     
        void sendPost() {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }
    }
    je remets ce que je reviens de copier du message initial modifié.

    a noter ligne 102 "HttpURLConnection" est souligné pour corriger cet "erreur il me demande d'importer java.net.HttpURLConnection et sun.net.www.protocol.http.HttpURLConnection
    ensuite ligne 106 il me mets un warning : "can use functional operation" ?
    et enfin celle sur les charset

  10. #10
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par K2carca Voir le message
    [
    je remets ce que je reviens de copier du message initial modifié.
    Cela ne sert à rien de mettre le code copié de mon message. C'est celui qui te donne une erreur qu'il faut montrer...

    Citation Envoyé par K2carca Voir le message
    a noter ligne 102 "HttpURLConnection" est souligné pour corriger cet "erreur il me demande d'importer java.net.HttpURLConnection et sun.net.www.protocol.http.HttpURLConnection
    [/code]
    Oui c'est ce que je te disais il manque effectivement un import. Celui de java.net.HttpURLConnection. On utilise jamais les classes de package sun... parce qu'on ne les retrouvent pas dans toutes les jre !
    Au passage, inutile de descendre jusqu'à javax.net.ssl.HttpsURLConnection, java.net.HttpURLConnection est suffisant. Il vaut mieux rester le plus générique possible.

    Citation Envoyé par K2carca Voir le message
    ensuite ligne 106 il me mets un warning : "can use functional operation" ?
    C'est juste un warning débile de NetBeans qui dit qu'on pourrait utiliser un stream au lieu d'un foreach. Dans le cas particulier, je trouve que ça rendrait le code moins lisible, potentiellement moins optimisé. C'est limite de la pignole ce genre de warning. Bref, on se balance.

    Citation Envoyé par K2carca Voir le message
    et enfin celle sur les charset
    Quelle erreur ? Pas d'erreur chez moi. Dans mon exemple, nulle part on utilise un String comme valeur d'argument de type Charset. D'ailleurs j'exécute le code sans souci.


    PS: au passage, arrête de copier intégralement mon message complet (utilise [Répondre à la discussion]), qui se trouve juste avant le tien, donc facilement accessible et lisible...
    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.

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 150
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Quelle erreur ? Pas d'erreur chez moi. Dans mon exemple, nulle part on utilise un String comme valeur d'argument de type Charset. D'ailleurs j'exécute le code sans souci.

    pas de souci, pour les erreurs ce sont celles don't je t'ai mentionné plus haut dans la discussion. (avec le charset). J'utilise JDK 1.8 par defaut. comme je t'ai dis j'ai cree un nouveau projet en copiant ton code (corriger et qui marche chez toi) dans ce nouveau projet. et j'ai juste ces 2 point d'exclamation rouge qui m'empeche de lance le programme pour cause d'incompatibilité.

  12. #12
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    En Java 8, la méthode encode(String, Charset) n'existe pas encore (seulement à partir de la 10) dans java.net.URLEncoder. On est juste bientôt à la version 13...

    Il suffit de passercharset.name() au lieu de charset en paramètre.
    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.

  13. #13
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 150
    Points : 45
    Points
    45
    Par défaut
    voici une capture ecran pour une meilleure compréhension

    Nom : Capture d’écran 2019-09-16 à 15.36.48.png
Affichages : 182
Taille : 1,27 Mo

  14. #14
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 150
    Points : 45
    Points
    45
    Par défaut
    ok merci
    je te confirme que ca marche ainsi.
    Apres l'ajout de ".name" les "erreurs de compatibilitée" ont disparue. (fallait juste que je vous spécifie sous quel JDK je travaille en fait désolé pour cette perte de temps).

    Puis vous demander juste une chose en plus svp ? si je veux sortir le résultat dans un fichier sur mon bureau (xml ou html) je dois indiquer cela sur la partie de code system.outprint?

  15. #15
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par K2carca Voir le message
    ok merci
    je te confirme que ca marche ainsi.
    Apres l'ajout de ".name" les "erreurs de compatibilitée" ont disparue. (fallait juste que je vous spécifie sous quel JDK je travaille en fait désolé pour cette perte de temps).
    Ou me montrer tout de suite les lignes en erreur
    Citation Envoyé par K2carca Voir le message
    Puis vous demander juste une chose en plus svp ? si je veux sortir le résultat dans un fichier sur mon bureau (xml ou html) je dois indiquer cela sur la partie de code system.outprint?
    En XML, ça risque pas, vu que je t'ai dit que c'était du HTML qu'on obtenait. Enfin, on peut générer du XML à partir du HTML en analysant le HTML, mais

    1. il vaut mieux utiliser un parser html pour pouvoir parcourir facilement le html. JSoup par exemple, d'ailleurs ça permettrait également de faire beaucoup plus facilement la requête.
    2. Le code de recherche et de formatage des informations est très spécifique au HTML et à ce que tu veux en obtenir en XML. Y'a que toi qui sait...
    3. Ensuite prendre une API XML la plus adaptée
      1. un JDOM2 si tu dois manipuler l'arbre XML et le parcourir et le reparcourir facilement, et si le modèle est simple
      2. StAX en streaming, si le modèle est simple et qu'on peut générer le xml en une passe, particulièrement si le volume de données est conséquent
      3. Ou une API de sérialisation à partir d'objets Java par exemple, JAXB




    Ensuite, pour obtenir un fichier qui contient la réponse de la requête qu'on affiche actuellement en console, il y a maintes manières d'écrire un texte dans un fichier (y compris créer un PrintStream qui fera que tu auras exactement l'équivalent de System.out mais vers un fichier). Mais le plus simple est encore de directement écrire le texte lu dans la réponse au fur et à mesure (et ça te donnera en exemple comment écrire une String dans un fichier, via un PrintWriter),

    Remplace cette partie (ou commente-là) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    			StringBuffer response;
    			try ( // success
    					BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()))) {
    				String inputLine;
    				response = new StringBuffer();
    				while ((inputLine = in.readLine()) != null) {
    					response.append(inputLine);
    				}
    			}
     
    			// print result
    			System.out.println(response.toString());
    par (attention, ça ne fonctionne que sous Windows, pour un autre système il faut adapter le chemin du fichier)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    File file =  new File(System.getProperty("user.home"),"Desktop/MonFichier.html"); // chemin du fichier...
    try(PrintWriter printwriter = new PrintWriter(file,StandardCharsets.UTF_8);
         BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()))) {
    	in.lines().forEach(printwriter::println);
    }
    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.

  16. #16
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 150
    Points : 45
    Points
    45
    Par défaut
    Tout d'abord merci pour votre réponse, elle mets tres utile.
    Ensuite, en effet je develloppe initialement ss mac, l'application qui in fine ira ss window.

    enfin, en effet du resultat que je vois dans la console je souhaite juste toutes les parties qui se trouvent entre certaines balises sans les header evidemment. bref juste les textes pas le reste.

  17. #17
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par K2carca Voir le message
    Ensuite, en effet je develloppe initialement ss mac, l'application qui in fine ira ss window.
    Sur Macintosh, ça devrait fonctionner directement, le dossier de bureau s'appelant Desktop, il me semble. Après tu pourras détecter l'os et adapter le chemin automatiquement, voire proposer à l'utilisateur de choisir l'emplacement du fichier.


    enfin, en effet du resultat que je vois dans la console je souhaite juste toutes les parties qui se trouvent entre certaines balises sans les header evidemment. bref juste les textes pas le reste.[/QUOTE]
    Il va falloir que tu décortiques le html pour déterminer où se trouvent les data que tu veux, peut-être les découper en morceau. Cela ne va pas être super simple parce que le html n'est pas super bien structuré et il n'y a aucune classe sémantique (que du stylage). JSoup t'aidera bien.

    Voici un exemple de base avec JSoup et StAX :

    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    import java.io.File;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.nio.charset.StandardCharsets;
    import java.nio.file.Files;
    import java.util.LinkedHashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.stream.Collectors;
     
    import javax.xml.stream.XMLOutputFactory;
    import javax.xml.stream.XMLStreamException;
    import javax.xml.stream.XMLStreamWriter;
     
    import org.jsoup.Connection;
    import org.jsoup.Connection.Method;
    import org.jsoup.Connection.Response;
    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import org.jsoup.nodes.Element;
    import org.jsoup.select.Elements;
     
    public class Notams {
     
    	private static final String ICAO = "LFBO LFMK";
    	private static final String REPORTTYPE = "Raw";
    	private static final String ACTIONTYPE = "notamRetrievalByICAOs";
    	private static final String BUTTON = "Check All NOTAMs";
    	private static final String SUBMIT = "View NOTAMs";
     
    	private static final String POST_URL = "https://www.notams.faa.gov/dinsQueryWeb/queryRetrievalMapAction.do";
     
    	public static void main(String[] args) {
    		Map<String, Object> parameters = new LinkedHashMap<>();
    		parameters.put("retrieveLocId", ICAO);
    		parameters.put("reporType", REPORTTYPE);
    		parameters.put("actionType", ACTIONTYPE);
    		parameters.put("button", BUTTON);
    		parameters.put("submit", SUBMIT);
     
    		File file = new File(System.getProperty("user.home"), "Desktop/MonFichier.xml");
     
    		try {
    			getData(parameters, file);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
     
    	}
     
    	public static void getData(Map<String, Object> params, File outputFile) throws IOException {
     
    		Connection jsoup = Jsoup.connect(POST_URL).timeout(10 * 1000).method(Method.POST);
     
    		params.entrySet().forEach(param -> jsoup.data(param.getKey(), String.valueOf(param.getValue())));
     
    		Response response = jsoup.execute();
     
    		// parse the document from response
    		Document document = response.parse();
     
    		XMLOutputFactory xmlfactory = XMLOutputFactory.newInstance();
    		try (OutputStream output = Files.newOutputStream(outputFile.toPath())) {
    			XMLStreamWriter xmlwriter = xmlfactory.createXMLStreamWriter(output);
    			xmlwriter.writeStartDocument();
    			try {
    				xmlwriter.writeStartElement("locations");
    				try { 
     
    					// on parcourt les tables de données
    					List<Element> tables = document.select("form table table").stream().skip(1) // on ignore les headers
    							.collect(Collectors.toList());
    					// les tables sont par paires, une pour le nom, une pour les data
    					for (int i = 0; i < tables.size(); i += 2) {
    						Element locationTable = tables.get(i);
    						// pour obtenir le nom (titre)
    						Element name = locationTable.selectFirst("tr:nth-child(2) > td:nth-child(1) > a");
    						if ( name==null ) continue; // on ignore les tables sans nom
    						xmlwriter.writeStartElement("location");
    						try {
    							// recherche du nom  
    							xmlwriter.writeAttribute("name", name.text()); // on récupère le texte
     
    							exportData(xmlwriter,tables.get(i+1));
     
    						} finally {
    							xmlwriter.writeEndElement(); // fermer location
    						}
    					}
     
    				} finally {
    					xmlwriter.writeEndElement(); // fermer locations
    				}
    			} finally {
    				xmlwriter.writeEndDocument();
    				xmlwriter.close();
    			}
    		} catch (XMLStreamException e) {
    			throw new IOException(e);
    		}
     
    	}
     
    	private static void exportData(XMLStreamWriter xmlwriter, Element element) throws XMLStreamException {
    		xmlwriter.writeStartElement("data");
    		try {
     
    			int index=1;
    			for(Element tr : element.select("tr")) {
    				xmlwriter.writeStartElement("ligne");
    				xmlwriter.writeAttribute("index", String.valueOf(index++));
    				try {
    					for(Element td : element.select("td")) {
    						xmlwriter.writeStartElement("cell");
    						try {
    							xmlwriter.writeCharacters(td.text());
    						}
    						finally {
    							xmlwriter.writeEndElement();
    						}
    					}					
    				}
    				finally {
    					xmlwriter.writeEndElement();
    				}
    			}
     
    		} finally {
    			xmlwriter.writeEndElement(); // fermer location
    		}
    	}
     
    }
    et le début du résultat :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?xml version="1.0" ?><locations><location name="LFBO TOULOUSE BLAGNAC"><data><ligne index="1"><cell></cell><cell></cell><cell>A4062/19 - RWY 14R/32L CLOSED. 18 SEP 20:00 2019 UNTIL 19 SEP 04:00 2019. CREATED: 12 SEP
    14:52 2019</cell><cell></cell><cell>A4046/19 - RWY 14R/32L CLOSED. 18 SEP 06:00 2019 UNTIL 18 SEP 14:00 2019. CREATED: 12 SEP
    12:28 2019</cell><cell>

    Et le fichier complet :
    Fichiers attachés Fichiers attachés
    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.

  18. #18
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 150
    Points : 45
    Points
    45
    Par défaut
    en gros le xml que tu me fais parvenir est ce que je recherche a obtenir mais sous le format "raw" de l'appli autrement sous jdk 8 il connait pas les org.jsoup...

    Nom : Capture d’écran 2019-09-16 à 21.16.15.png
Affichages : 179
Taille : 1,20 Mo

  19. #19
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par K2carca Voir le message
    il connait pas les org.jsoup...
    C'est une bibliothèque externe qu'il faut télécharger : https://jsoup.org/download. Tu télécharges le jar, tu le mets dans ton projet et tu l'ajoutes au classpath de ton projet.
    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.

  20. #20
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 150
    Points : 45
    Points
    45
    Par défaut
    Merci Joel pour ton aide précieuse.
    j'ai passé un bon moment a essayer d'installer le JSoup (quand on est pas bon dans ce genre de ce chose soit on apprend soit on apprend :-) )
    en tout en dehors maintenant d'une petite mise en forme de sortie quand au format du texte que je recois (en principe je devrais le recevoir en reportType = raw comme ceci
    4062/19 NOTAMN
    Q) LFBB/QMRLC/IV/NBO/A /000/999/4338N00122E005
    A) LFBO B) 1909182000 C) 1909190400
    E) RWY 14R/32L CLOSED
    CREATED: 12 Sep 2019 14:52:00
    SOURCE: EUECYIYN

    mais la cela ne semble pas être le cas car ils semblent ressortir en reportType = Report comme cela

    A4062/19 - RWY 14R/32L CLOSED. 18 SEP 20:00 2019 UNTIL 19 SEP 04:00 2019. CREATED: 12 SEP

    ce qui m'arrange moins pour la suite et la ou je veux en venir. je vais donc essayer de regarder d'ou cela peut provenir,
    donc en dehors de se souci la mon pb de Http Post est résolu
    un grand merci a toi et je vais creuser un peu plus sur tes conseils la facon de faire des telles requêtes.
    Il est un peu regrettable qu'il n'y ai pas de Tuto a proprement parler en francais sur ce sujet ou du moins trop succint comme information.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/11/2017, 09h02
  2. [NDK] JAVA HTTP POST + réponse
    Par Benmaster1 dans le forum Android
    Réponses: 2
    Dernier message: 05/03/2014, 19h13
  3. JAVA Android HTTP POST
    Par Benmaster1 dans le forum Android
    Réponses: 6
    Dernier message: 04/03/2014, 17h53
  4. [XCode] how to send HTTP Post Request with parameters?
    Par SALMAENIT dans le forum XCode
    Réponses: 0
    Dernier message: 03/04/2012, 18h53
  5. Java & Http POST
    Par zentro dans le forum Général Java
    Réponses: 0
    Dernier message: 20/05/2010, 13h43

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