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
    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.
    AndreaSenior Java developerSCJP 5 (91%) – SCWCD 5 (94%)
    Il mio nuovo sito-blog italiano sulla programmazione: andbin.it

  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 © 2020 vBulletin Solutions, Inc. All rights reserved.