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 :

Erreur HttpURLConnection, Erreur 404 ressource non trouvée


Sujet :

Développement Web en Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 29
    Points : 31
    Points
    31
    Par défaut Erreur HttpURLConnection, Erreur 404 ressource non trouvée
    Bonjour tout le monde,

    Je suis confronté à un problème qui dure deux semaines déjà, je commence d'ailleurs à perdre la tête. Lorsque j'envoie la requête avec l'objet directInput (actuellement en commentaire à la ligne 18), le code fonctionne correctement et la requête est parfaitement exécutée. Par contre lorsque la requête est envoyée avec l'objet jsonInput (à la ligne 27) j'ai une erreur 404 ressource non trouvée.

    Merci de bien vouloir m'aider à voir ce que j'ai mal fait ?

    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
    public class Test {
     
    public static void main(String[] args) {
        try {
     
            String userCredentials = "USR28:YG739G5XFVPYYV4ADJVW";
            String basicAuth = "Basic " + new String(Base64.getEncoder().encode(userCredentials.getBytes()));
     
            URL url = new URL("http://74.208.84.251:8221/QosicBridge/user/deposit");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
            conn.setRequestProperty("Accept", "application/json");
            conn.setRequestProperty ("Authorization", basicAuth);
     
            //String directInput = "{\"msisdn\":\"22997858711\",\"amount\":1400,\"transref\":\"JDQY78J6ABX68F0T56FP\",\"clientid\":\"UBHQ\"}";
     
            DepositObject d = new DepositObject();
            d.setMsisdn("22997858711");
            d.setAmount(1400);
            d.setTransref("JDQY78J6ABX68F0T56FP");
            d.setClientid("UHBQ");
     
            Gson gson = new Gson();
            String jsonInput = gson.toJson(d).toString();
     
            OutputStream os = conn.getOutputStream();
            os.write(jsonInput.getBytes());
            os.flush();
     
            if (conn.getResponseCode() != 200) {
                throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode());
            }
     
            BufferedReader br = new BufferedReader(new InputStreamReader( (conn.getInputStream())));
            String output;
            while ((output = br.readLine()) != null) {
                System.out.println(output);
            }
     
            conn.disconnect();
     
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

  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,

    Tu as regardé quelle était la valeur jsonInput et l'as comparé à directinput ? C'est bien la même chose ? Quel est le code de la classe DepositObject, ses getters exposés ?

    Tu indiques envoyer du json encodé UTF-8, mais tu écris dans le flux la chaîne encodée dans l'encodage par défaut, dont il nullement garanti que cela soit du UTF-8. Indique que c'est du UTF-8 que tu veux obtenir jsoninput.getBytes(StandardCharsets.UTF_8)
    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
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 29
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Salut,

    Tu as regardé quelle était la valeur jsonInput et l'as comparé à directinput ? C'est bien la même chose ? Quel est le code de la classe DepositObject, ses getters exposés ?

    Tu indiques envoyer du json encodé UTF-8, mais tu écris dans le flux la chaîne encodée dans l'encodage par défaut, dont il nullement garanti que cela soit du UTF-8. Indique que c'est du UTF-8 que tu veux obtenir jsoninput.getBytes(StandardCharsets.UTF_8)
    Bonjour monsieur,

    Merci pour votre coup de main.
    Les valeurs de jsonInput et directInput sont les memes, j'ai pris le soin de les afficher dans la console pour comparaison. J'ai effectué les changements que vous avez suggéré au niveau de l'encodage mais ça n'a rien changé. Même quand je ne met pas d'encodage j'ai toujours le même message d'erreur 404
    Ci-dessous le code de la classe DepositObject

    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
    public class DepositObject {
     
    	private String msisdn;
     
    	private int amount;
     
    	private String transref;
     
    	private String clientid;
     
    	public String getMsisdn() {
    		return msisdn;
    	}
     
    	public int getAmount() {
    		return amount;
    	}
     
    	public String getTransref() {
    		return transref;
    	}
     
    	public String getClientid() {
    		return clientid;
    	}
     
    	public void setMsisdn(String msisdn) {
    		this.msisdn = msisdn;
    	}
     
    	public void setAmount(int amount) {
    		this.amount = amount;
    	}
     
    	public void setTransref(String transref) {
    		this.transref = transref;
    	}
     
    	public void setClientid(String clientid) {
    		this.clientid = clientid;
    	}
     
    	@Override
    	public String toString() {
    		return "DepositObject [msisdn=" + msisdn + ", amount=" + amount + ", transref=" + transref + ", clientid="
    				+ clientid + "]";
    	}
     
    }

  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
    Il n'y à priori aucune raison que le service réponde différemment si on lui envoie la même chose, à moins que...

    Tu peux montrer le code exact qui fonctionne (donc avec directinput au lieu de jsoninput) ?
    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
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 29
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Il n'y à priori aucune raison que le service réponde différemment si on lui envoie la même chose, à moins que...

    Tu peux montrer le code exact qui fonctionne (donc avec directinput au lieu de jsoninput) ?
    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
    public class Test {
     
    	public static void main(String[] args) {
    		try { 
     
    			String userCredentials = "USR28:YG739G5XFVPYYV4ADJVW";
    	        String basicAuth = "Basic " + new String(Base64.getEncoder().encode(userCredentials.getBytes()));
     
    	        URL url = new URL("http://74.208.84.251:8221/QosicBridge/user/deposit"); 
    			HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
    			conn.setDoOutput(true);
    			conn.setDoInput(true);
    			conn.setRequestMethod("POST"); 
    			conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
    			conn.setRequestProperty("Accept", "application/json");
    			conn.setRequestProperty ("Authorization", basicAuth);
     
    			String directInput = "{\"msisdn\":\"22997858711\",\"amount\":1400,\"transref\":\"QOVNPVTRAF69BK1VIL1A\",\"clientid\":\"UBHQ\"}";
     
    	        DepositObject d = new DepositObject();
    			d.setMsisdn("22997858711");
    			d.setAmount(35);
    			d.setTransref(generateTransactionReference(20));
    			d.setClientid("UHBQ");
     
    			Gson gson = new Gson();
    			String jsonInput = gson.toJson(d).toString();
     
    			System.out.println(jsonInput);
     
    			OutputStream os = conn.getOutputStream();
    			os.write(directInput.getBytes(StandardCharsets.UTF_8)); 
    			os.flush(); 
     
    			if (conn.getResponseCode() != 200) { 
    				throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode()); 
    			} 
     
    			BufferedReader br = new BufferedReader(new InputStreamReader( (conn.getInputStream()))); 
    			String output; 
    			while ((output = br.readLine()) != null) { 
    				System.out.println(output); 
    			} 
     
    			conn.disconnect();
     
    		} catch (MalformedURLException e) { 
    			e.printStackTrace(); 
    		} catch (IOException e) { 
    			e.printStackTrace(); 
    		}
    	}
     
    	private static String generateTransactionReference(int len) {
    		char[] ch = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
    	    char[] c=new char[len];
    	    Random random=new Random();
    	    for (int i = 0; i < len; i++) {
    	      c[i]=ch[random.nextInt(ch.length)];
    	    }	    
    	    return new String(c);
    	}
    }

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 29
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Il n'y à priori aucune raison que le service réponde différemment si on lui envoie la même chose, à moins que...

    Tu peux montrer le code exact qui fonctionne (donc avec directinput au lieu de jsoninput) ?
    Ci-dessous une capture des deux objets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    directInput : {"msisdn":"22997858711","amount":1400,"transref":"QOVNPVTRAF69BK1VIL1A","clientid":"UBHQ"}
    jsonInput : {"msisdn":"22997858711","amount":1400,"transref":"QOVNPVTRAF69BK1VIL1A","clientid":"UHBQ"}

  7. #7
    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
    Ce que je voulais voir c'était le code, pour voir s'il n'y a pas une subtilité qui expliquerait une différence de comportement.
    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.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 29
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Ce que je voulais voir c'était le code, pour voir s'il n'y a pas une subtilité qui expliquerait une différence de comportement.
    Le code est juste au dessus des objets

  9. #9
    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
    Ah, oui, au temps pour moin, je n'avais pas vu, parce que tu as posté deux messages (!)...

    Je ne vois rien d'évident qui pourrait expliquer qu'on ait un 404 dans un cas et pas dans l'autre, vu que l'uri est la même, à moins que le service soit foireux, ou que la ressource n'existe plus entre les deux appels. Tu as accès à des logs sur le serveur qui pourraient éventuellement donner des indices sur la différence de comportement...
    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.

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 29
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Ah, oui, au temps pour moin, je n'avais pas vu, parce que tu as posté deux messages (!)...

    Je ne vois rien d'évident qui pourrait expliquer qu'on ait un 404 dans un cas et pas dans l'autre, vu que l'uri est la même, à moins que le service soit foireux, ou que la ressource n'existe plus entre les deux appels. Tu as accès à des logs sur le serveur qui pourraient éventuellement donner des indices sur la différence de comportement...
    ça fait deux semaines que je bataille sur ce p**ain de code. Depuis deux semaines je n'arrive plus à bien dormir. ça relève de l’irréel ce qui m'arrive.

    merci d'avoir consacré votre temps à déboguer mon p**ain de code.

Discussions similaires

  1. erreur http 404 ressource non disponible avec web.xml correctement configuré
    Par <yassou> dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 12/06/2015, 10h32
  2. Erreur 404 page non trouvée
    Par hugodu28 dans le forum Langage
    Réponses: 11
    Dernier message: 16/06/2011, 16h19
  3. Erreur ressource non trouvée avec WindowBlinds
    Par jbrg dans le forum Langage
    Réponses: 2
    Dernier message: 25/10/2009, 00h09
  4. Erreur de "Élément non trouvé dans cette collection"
    Par charleshbo dans le forum Access
    Réponses: 4
    Dernier message: 04/05/2006, 18h42
  5. [Debutant][Install][VS]erreur sur fichier non trouvé.
    Par silvermoon dans le forum DirectX
    Réponses: 4
    Dernier message: 16/07/2004, 20h59

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