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

  1. #21
    Futur Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    octobre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : octobre 2018
    Messages : 2
    Points : 8
    Points
    8

    Par défaut Sus à CHORUS ! Connexion API

    Bonjour à tous,

    tout d'abord merci pour vos solutions, grâce à ce topic j'ai pu tester mon raccordement API sur SoapUI (ça fonctionne parfaitement) et commencer à le développer en JAVA.
    Cependant il semblerait que CHORUS n'accepte pas ma connexion, l'erreur retournée est la suivante:

    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    J'avais déjà eu cette erreur avec SoapUI car le certificat fournit n'était pas correct. Maintenant que le certificat est validé dans SoapUI (c'est le même que je charge en Java), je ne comprends pas d'où ça peut venir ...

    Voici le code JAVA:

    Code Java : 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
     
    			/*
    			 * Initialise SSL Context :  p12  certificate
    			 */
    			KeyStore ks = KeyStore.getInstance("PKCS12");
    			FileInputStream fis = new FileInputStream("PathToCertif.p12");
    			ks.load(fis, "CertifPassword".toCharArray());
    			KeyManagerFactory kmfs = KeyManagerFactory.getInstance("SunX509");
    			kmfs.init(ks, "CertifPassword".toCharArray());
    			SSLContext sc = SSLContext.getInstance("SSL");
    			sc.init(kmfs.getKeyManagers(), null, null);
     
    			HttpClient httpClient = HttpClients.custom()
    					.setSSLContext(sc)
    					.build();
     
    			/*
    			 * Initialise request :  URL  +  Json
    			 */
    			HttpPost request = new HttpPost("https://chorus-pro.gouv.fr:5443/service-qualif/factures/consulter/fournisseur");
     
    			request.addHeader("Content-Type",  "application/json");
    			request.addHeader("Username",  "MON_COMPTE_TECHNIQUE@cpp2017.fr");  // Technical Account + password
    			request.addHeader("Password", "**PASSWORD_COMPTE_TECHNIQUE**");
     
    			String jsonArg = "";
    			jsonArg+="{\n";
    			jsonArg+="\"idUtilisateurCourant\" : 26022802,\n";
    			jsonArg+="\"identifiantFactureCPP\" : 2497398 \n";
    			jsonArg+="}";
     
    			request.setEntity(new StringEntity(jsonArg,StandardCharsets.UTF_8));
     
    			HttpResponse resp = httpClient.execute(request);

    L'erreur ".SSLHandshakeException" se déclenche à la ligne 34 "httpClient.execute(request)" .


    Si quelqu'un a une idée, merci par avance !


    Signé, un novice en java

  2. #22
    Membre du Club
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    octobre 2005
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier

    Informations forums :
    Inscription : octobre 2005
    Messages : 1
    Points : 64
    Points
    64

    Par défaut

    Bonjour Geek1,
    J'ai le même problème, est ce que tu aurais trouvé la solution ?

  3. #23
    Futur Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    octobre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : octobre 2018
    Messages : 2
    Points : 8
    Points
    8

    Par défaut CHORUS JAVA

    Citation Envoyé par patoch95 Voir le message
    J'ai le même problème, est ce que tu aurais trouvé la solution ?

    Nous avons finalement réussi à appeler le service "chorus-pro.gouv.fr:5443/service-qualif/factures/consulter/fournisseur" en Java, ci dessous la solution, à adapter avec vos informations (certificat, compte technique ...)

    Code Java : 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
     
                            System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
     
    			String KEYSTORE = "", TRUESTORE = "";
    			KEYSTORE = "MY_PATH_TO_CERTIF.p12";
    			final String KEYSTOREPASS = "PASSWORD_CERTIF";
    			TRUESTORE = "PATH_TO_cacert_FILE";
    			final String TRUESTOREPASS = "TRUSTSTORE_PASS_default:changeit";
     
     
    			String httpsURL = "https://chorus-pro.gouv.fr:5443/service-qualif/factures/consulter/fournisseur";   //your URL
     
    			URL url = new URL(null, httpsURL, new sun.net.www.protocol.https.Handler());
    			KeyStore ks = KeyStore.getInstance("pkcs12");
    			ks.load(new FileInputStream(KEYSTORE), KEYSTOREPASS.toCharArray());
    			KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
    			kmf.init(ks, KEYSTOREPASS.toCharArray());
    			SSLContext sslctx2 = SSLContext.getInstance("SSLv3");
    			sslctx2.init(kmf.getKeyManagers(), null, null);
    			KeyStore ksTrust = KeyStore.getInstance("JKS");
    			ksTrust.load(new FileInputStream(TRUESTORE), TRUESTOREPASS.toCharArray());
     
    			//TrustManager
    			TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
    			tmf.init(ksTrust);
    			System.setProperty("javax.net.ssl.keyStoreType", "pkcs12");
    			System.setProperty("javax.net.ssl.trustStoreType", "jks");
    			System.setProperty("javax.net.ssl.keyStore", KEYSTORE);
    			System.setProperty("javax.net.ssl.trustStore", TRUESTORE);
    			System.setProperty("javax.net.debug", "ssl");
    			System.setProperty("javax.net.ssl.keyStorePassword", KEYSTOREPASS);
    			System.setProperty("javax.net.ssl.trustStorePassword", TRUESTOREPASS);
    			SecureRandom sc = null;
    			sslctx2.init(kmf.getKeyManagers(), tmf.getTrustManagers(), sc);
     
    			HttpsURLConnection.setDefaultSSLSocketFactory(sslctx2.getSocketFactory());
     
    			JSONObject idU = new JSONObject();
    			idU.put("idUtilisateurCourant", 10742); 
    			idU.put("identifiantFactureCPP", 2497398);
    			logger.info(idU);
     
    			String headerAuth = "TECHNICAL@USER" + ":" + "PASSWORD_TECHNICAL USER";
    			String bytesEncoded = Base64.getEncoder().encodeToString(headerAuth.getBytes("UTF-8"));
    			String sHeaderAuth = "Authorization: Basic " + bytesEncoded;
     
    			HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
     
    			//connection
    			con.setRequestMethod("POST");
    			con.setDoOutput(true);
    			con.setRequestProperty("Accept-Encoding", "gzip,deflate");
    			con.setRequestProperty("Content-Type", "application/json");
    			con.setRequestProperty("Authorization", "Basic " + bytesEncoded);
    			con.setRequestProperty("Host", "chorus-pro.gouv.fr:5443");
    			con.setRequestProperty("Connection", "Keep-Alive");
     
    			//stream
    			OutputStreamWriter os = new OutputStreamWriter(con.getOutputStream());
    			os.write(idU.toString());
    			os.flush();
    			String line = "";
    			BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
    			line = br.readLine();
    			while ((line = br.readLine()) != null) {
    				System.out.println(line);
    			}
    			br.close();
    			os.close();

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/06/2007, 19h56
  2. Réponses: 1
    Dernier message: 01/03/2007, 10h03
  3. Réponses: 4
    Dernier message: 03/01/2007, 22h56
  4. Réponses: 3
    Dernier message: 06/06/2006, 13h22
  5. [9i] COMMENT LANCER PRO-STOC par un fichier Alimente.BAT
    Par Etienne maheu dans le forum Oracle
    Réponses: 2
    Dernier message: 11/10/2005, 13h07

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