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 :

HttpURLConnection et error 400


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Découvre Netbeans et Java
    Inscrit en
    Avril 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Découvre Netbeans et Java
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2015
    Messages : 18
    Points : 16
    Points
    16
    Par défaut HttpURLConnection et error 400
    Bonjour a tous,

    Je suis en train de faire une methode pour telecharger un fichier. Les parametres de la methode sont donc l'URL du fichier, et le repertoire d'arrivee sur le disque dur
    Ca commence comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public static void Telecharge (String URL_fichier, String Rep_arrivee) throws IOException {
            URL url_fic= new URL(URL_fichier) ;
            HttpURLConnection connec = (HttpURLConnection) url_fic.openConnection() ;
            int code_rep = connec.getResponseCode() ;
            System.out.println ("Reponser serveur : " + code_rep);
            if (code_rep == 200) {
              etc.
            }
    }
    Ensuite si j'ai un retour 200, je cree mes inputstream et outputstream et j'ecris dans un fichier: j'ai teste la methode sur plein de fichiers et ca fonctionne impeccablement.
    Par contre, hier soir, je suis tombe sur une erreur 400 alors que le fichier existe bien. Du coup, pour bien verifier, j'ai colle l'URL dudit fichier a la fois dans Chrome, Opera, et Firefox : ca marche dans les 3 navigateurs, le fichier MP3 est bien lu et je peux le telecharger parfaitement dans tous les cas.
    Mais alors, si ca fonctionne sur navigateur, pourquoi est-ce qu'il me jette avec mon programme Java? J'ai meme tente de telecharger d'autres fichiers MP3 du meme site, et ca fonctionne.. J'en perds mon latin
    Merci d'avance

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    400 => pas compris la requête. Tu peux avoir le message complet avec getResponseMessage().
    Pourquoi c'est différent en java? Peut être parce que le site interdit les bots de téléchargement. Peut être parce qu'il attends des cookies, une session, des paramètres. Quelle est l'URL en défaut?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Découvre Netbeans et Java
    Inscrit en
    Avril 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Découvre Netbeans et Java
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2015
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    Merci pour tes explications. Je vais peut-etre tenter un openStream direct, ou du moins faire un getErrorStream voir ce qu'il me dit, si tant est que le serveur est loquace.

    Sinon l'URL foireuse:
    http://chorale.nd.fatima.free.fr/Feu...des restos.mp3 => renvoie 400
    A noter que dans le meme repertoire, je peux telecharger sans probleme
    http://chorale.nd.fatima.free.fr/Feu...6/04-piano.mp3 => 200

    C'est ca qui m'a rendu perplexe

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    tu as bien encodé l'url avant de l'utiliser? les espaces doivent être remplacés par des %20.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Découvre Netbeans et Java
    Inscrit en
    Avril 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Découvre Netbeans et Java
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2015
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Suis je bete, voila l'erreur! Ca marche maintenant, merci beaucoup
    En fait je n'avais rien touche du tout. J'avais fait un get de "http://chorale.nd.fatima.free.fr/FeuillesChants/Annee_2006/Noel_2006/" et j'ai parse le response body. Et en fait, sur les autres sites que je teste, tout etait deja bien encode avec les %xx et donc je n'ai pas fait gaffe. Sur ce site, en regardant le source html, effectivement ils ne l'avaient meme pas encode (super le webmaster ). Comme je n'ai pas fait de verif, je suis tombe dans le panneau... Merci encore pour ton aide

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Les spécifications HTML sont claires: le webmaster n'a aucun besoin d'encoder les caractères qui ne sont pas ambigus (en gros il doit encoder ? et & et % mais le reste il fait comme il veut.) C'est le navigateur qui se chargera d'encoder ce qui doit l'être.

    Les spécifications URI et HTTP sont claires aussi: une même URI peut être écrite de différentes manières pour être plus ou moins agréable à l'affichage dans une barre de navigation par exemple. Mais elle a également une forme "machine" dans laquelle tous les espaces, tous les caractères spéciaux et tout ce qui n'est pas ASCII doit être encodé. C'est cette forme qui doit être utilisée en interne par les programmes qui communiquent en HTTP.

    Les spécifications Java sont moins claires: elles ne le disent pas mais la String qui construit l'URL doit être encodée sous forme "machine". Java ne le fera pas lui-même. À noter qu'avec des caractères accentués dans une URL ce serait impossible, car Java ne peut pas deviner quel est le charset à utiliser. Alors que le navigateur le peut en utilisant le même charset que la page, ou en décidant que c'est utf-8 si l'URL ne vient pas d'une page.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. [XL-2007] Error 400 depuis que Windows a été mis à jour
    Par Accessifiante dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 22/07/2014, 17h21
  2. HttpServerApi HostName (ERROR 400)
    Par YannGEF dans le forum Réseau
    Réponses: 1
    Dernier message: 03/07/2014, 14h39
  3. [XL-2010] VBA - ERROR 400 chez un autre mais pas chez moi
    Par Accessifiante dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 06/12/2013, 16h04
  4. WebRequest : error 400
    Par milou29 dans le forum C#
    Réponses: 0
    Dernier message: 03/10/2011, 18h44
  5. Axis2 Error 400 Bad Request
    Par Calahad dans le forum Services Web
    Réponses: 2
    Dernier message: 11/04/2007, 13h32

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