Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Problema unable to find valid certification path to requested target e registratore di cassa

    ciao!

    ho in registratore di cassa che usa delle api rest per l'invio delle richieste come la stampa dello scontrino.

    sto facendo varie prove, tra cui questa in java e okhttp:
    codice:
    package com.mp.test;
    
    import okhttp3.*;
    
    import java.io.IOException;
    
    public class Main {
    
        public static void main(String[] args) {
            try {
                OkHttpClient client = new OkHttpClient().newBuilder()
                        .build();
                MediaType mediaType = MediaType.parse("text/plain");
                RequestBody body = RequestBody.create(mediaType, "CLEAR\nRESPRN\t\t\t\t\t\t\t\t\t\t\t\t;Annulla eventuali transazioni aperte\nCHIAVE REG\nvend rep=1, prezzo=1\nchius\nwecfine\n");
                Request request = new Request.Builder()
                        .url("https://192.168.1.120/cmd/wec")
                        .method("POST", body)
                        .addHeader("Content-Type", "text/plain")
                        .build();
                Response response = client.newCall(request).execute();
                System.out.println(response);
            } catch (IOException e) {
                System.out.println(e.getMessage());
            }
        }
    
    }
    ma ottengo questo errore:
    codice:
    PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    come posso bypassare il controllo della validità del certificato??

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da fermat Visualizza il messaggio
    come posso bypassare il controllo della validità del certificato??
    Non ho conoscenza/esperienza su OkHttp ma se cerchi in rete "okhttp3 ignore certificate" trovi molte info a riguardo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    risolto:
    codice:
    public class Main {
    
        public static void main(String[] args) {
            try {
                OkHttpClient client = getUnsafeOkHttpClient();
    
                MediaType mediaType = MediaType.parse("text/plain");
                RequestBody body = RequestBody.create(mediaType, "CLEAR\nRESPRN\t\t\t\t\t\t\t\t\t\t\t\t;Annulla eventuali transazioni aperte\nCHIAVE REG\nvend rep=1, prezzo=1\nchius\nwecfine\n");
                Request request = new Request.Builder()
                        .url("https://192.168.1.120/cmd/wec")
                        .method("POST", body)
                        .addHeader("Content-Type", "text/plain")
                        .build();
                Response response = client.newCall(request).execute();
                System.out.println(response);
            } catch (KeyManagementException | NoSuchAlgorithmException | IOException e) {
                System.out.println(e.getMessage());
            }
        }
    
        private static OkHttpClient getUnsafeOkHttpClient() throws KeyManagementException, NoSuchAlgorithmException {
            final TrustManager[] trustAllCerts = new TrustManager[]{
                    new X509TrustManager() {
                        @Override
                        public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
                        }
    
                        @Override
                        public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
                        }
    
                        @Override
                        public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                            return new java.security.cert.X509Certificate[]{};
                        }
                    }
            };
    
            final SSLContext sslContext = SSLContext.getInstance("SSL");
            sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
            final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
    
            OkHttpClient.Builder builder = new OkHttpClient.Builder();
            builder.sslSocketFactory(sslSocketFactory, (X509TrustManager) trustAllCerts[0]);
            builder.hostnameVerifier((hostname, session) -> true);
    
            OkHttpClient okHttpClient = builder
                    .connectTimeout(15, TimeUnit.SECONDS)
                    .writeTimeout(15, TimeUnit.SECONDS)
                    .readTimeout(15, TimeUnit.SECONDS)
                    .build();
    
            return okHttpClient;
        }
    
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.