云数据库 GeminiDB-通过Java语言连接GeminiDB Influx实例:使用SSL方式连接实例的Java代码示例

时间:2025-01-26 10:50:09

使用SSL方式连接实例的Java代码示例

package influxdb; import java.security.SecureRandom; import java.security.cert.X509Certificate; import java.util.concurrent.TimeUnit; import javax.net.ssl.SSLContext; import okhttp3.OkHttpClient; import org.influxdb.InfluxDB; import org.influxdb.InfluxDBFactory; import org.influxdb.dto.Point; import org.influxdb.dto.Query; import org.influxdb.dto.QueryResult; import org.apache.http.ssl.SSLContexts; import javax.net.ssl.*; public class demo {     public static void main(String[] args) {         OkHttpClient.Builder client = new OkHttpClient.Builder()             .connectTimeout(10, TimeUnit.SECONDS)             .writeTimeout(10, TimeUnit.SECONDS)             .readTimeout(10, TimeUnit.SECONDS)             .retryOnConnectionFailure(true);         client.sslSocketFactory(defaultSslSocketFactory(), defaultTrustManager());         client.hostnameVerifier(noopHostnameVerifier());         // 认证用的用户名和密码直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中存放(密码应密文存放、使用时解密),确保安全;         // 本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置)EXAMPLE_USERNAME_ENV和EXAMPLE_PASSWORD_ENV。         String username = System.getenv("EXAMPLE_USERNAME_ENV");         String password = System.getenv("EXAMPLE_PASSWORD_ENV");         final String serverURL = "https://127.0.0.1:8086", username = username, password = password;         InfluxDB influxdb = InfluxDBFactory.connect(serverURL, username, password, client);         // Create a database...         String databaseName = "foo";         influxdb.query(new Query("CREATE DATABASE " + databaseName, databaseName));         influxdb.setDatabase(databaseName);         // Write points to influxdb.         influxdb.write(Point.measurement("bar")             .time(System.currentTimeMillis(), TimeUnit.MILLISECONDS)             .tag("location", "chengdu")             .addField("temperature", 22)             .build());         // Query your data using InfluxQL.         QueryResult queryResult = influxdb.query(new Query("SELECT * FROM bar", databaseName));         // Close it if your application is terminating or you are not using it anymore.         influxdb.close();     }     private static X509TrustManager defaultTrustManager() {         return new X509TrustManager() {             public X509Certificate[] getAcceptedIssuers() {                 return new X509Certificate[0];             }             public void checkClientTrusted(X509Certificate[] certs, String authType) {             }             public void checkServerTrusted(X509Certificate[] certs, String authType) {             }         };     }     private static SSLSocketFactory defaultSslSocketFactory() {         try {             SSLContext sslContext = SSLContexts.createDefault();             sslContext.init(null, new TrustManager[] {                 defaultTrustManager()             }, new SecureRandom());             return sslContext.getSocketFactory();         } catch (Exception e) {             throw new RuntimeException(e);         }     }     private static HostnameVerifier noopHostnameVerifier() {         return new HostnameVerifier() {             @Override             public boolean verify(final String s, final SSLSession sslSession) {                  return true;//true 表示使用ssl方式,但是不校验ssl证书,建议使用这种方式             }         };     } }
support.huaweicloud.com/influxug-nosql/nosql_09_0101.html