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. #41
    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
    bonjour joel,

    ce que je désignais par "temps imparti" c'était le bout de code 10*1000 mais en fait je viens de comprendre que ce temps n'est que pour la connection a l'URL (si je ne me trompe pas en cas de non réponse de ce dernier).

    je te remercie pour l'information l'utilisation du foreach.... je t'avouerais qu'apres quelques essai infructueux, et meilleure analyse de ta premiere partie de dernière réponse, j'ai un peu mieux adapté le code et obtiens enfin un resultat comme je le souhaite. (et il s'arrette bien comme il le faut)

    voici ci dessous mon code pas loin du final.

    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
     
    package notams;
     
    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 = "LFFF LFBB LFMM LFRR LFEE LIRR LIBB LIMM LECB LECM LPPC LMMM LGGG LCCC LLLL OLBB ";
    	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("reportType", 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("locations");
    						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 PRE : element.select("PRE")) {
     
                                xmlwriter.writeStartElement("PRE");
    						try {
    							xmlwriter.writeCharacters(PRE.text());
    						}
    						finally {
    							xmlwriter.writeEndElement();
    						}
    					}					
    				}
    				finally {
    					xmlwriter.writeEndElement();
    				}
    			}
    	}
    voici le fichier xml qu'il me retourne.

    MonFichier.xml

    il ne me reste plus qu'a transformer ce xml en texte avec juste ce qu'il y a comme texte entre les balises.
    J'ai reussi a glané a droite a gauche un code mais il ne me sors que 2 resultats et de plus dans la console la ou je souhaite au final un fichier texte mais je pense que je ferai un autre post pour ca ou du moins je vais chercher un peu plus.

  2. #42
    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
    parfois un problème en cache plusieurs autres..

    il y a t il une raison pour laquelle mon code me coupe le dernier message et semble ne pas allez au bout la requete ?

    voici ma liste de requete (en gras les terrains traités):

    LFFF LFBB LFMM LFRR LFEE LIRR LIBB LIMM LECB LECM LPPC LMMM LGGG LCCC LLLL OLBB

    et voici la ou il s'arrette et qui plus est en coupant le dernier message (car ils doivent tous finir par SOURCE: EUECYIYN or ce n'est pas le cas ici et qui plus est

    <PRE>A0743/19 NOTAMR A0419/19
    Q) LMMM/QAFXX/IV/NBO/E /000/999/3525N01733E999
    A) LMMM B) 1906251040 C) 1909302359
    E) THE CIVIL AVIATION DIRECTORATE, SUBJECT TO, AND IN ACCORDANCE
    WITH
    REGULATION (EU) 2018/1139, ARTICLE 70, DIRECTS PILOTS AND OPERATORS
    OF ANY BOEING 737-8 MAX AND BOEING 737-9 MAX NOT TO CONDUCT ANY
    FLIGHT WITHIN THE TERRITORIAL AIRSPACE OF MALTA.
    CREATED: 25 Jun 2019 10:43:00
    SOURCE: EUECYIYN</PRE>
    <PRE>A0740/19 NOTAMR A0739/19
    Q) LMMM/QRALW/IV/NBO/W /000/065/3455N01135E021
    A) LMMM B) 1906241623 C) 1909302359
    E) AIRSPACE RESERVATION WILL TAKE PLACE
    TU</PRE></data></locations></locations>

  3. #43
    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
    De ce que j'ai regardé et testé rapidement, les données extraites correspondent bien aux données exposées. Difficile de tester en plus parce que les données changes régulièrement et sont parfois correctes (à priori, il y a bien la source à chaque fin de pre), parfois non. Il te faut analyser plus attentivement les données exposées (rien ne garantit que le site n'expose pas des données incomplètes parfois, ou que leur structure d'affichage soit stable). Quoiqu'il en soit, je t'ai déjà dit que chercher à récupérer des données d'un site html alors qu'on peut les avoirs structurées d'un service est absurde. Tu ne peux pas garantir que des données exposées à fin de lecture soient complètes et suffisamment structurées pour récupérer facilement les données complètes et suffisamment structurées qui ont permis de générer cet affichage.
    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.

  4. #44
    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
    Etrange car j'ai essayé a plusieur reprise et je ne comprends pas

    j'ai rentre cette liste dans ICAO
    LFFF LFEE LFRR LFBB LFMM LECM LECB LPPC LIMM LIRR LIBB LGGG LCCC LLLL OJAC OOMM OYSC HAAA HSSS HECC DAAA GOOO ORRR DGAC DNKK FTTT FCCC GVSC SOOO TTZP OJAC OBBB ORBB OEJD OMAE

    le fichier de sortie s'arrette a LGGG et encore cet incomplet (en comparaison ou je fais moi-même la requete sur le site

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

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