-keep class net.jpountz.lz4.** { *; }。config.debuggable = NO、Android:config.debuggable = false)。これによりログ漏洩を防止します。パラメータ名 | タイプ | 説明 | デフォルト値 |
endpoint | String | - | |
accessKeyId(secretId) | String | - | |
accessKeySecret(secretKey) | String | - | |
topicId | String | - | |
token | String | 一時キー(オプション)。 | - |
sendLogInterval | Int | ログ送信滞留時間、単位:秒。 | 5 |
maxMemorySize | Int | メモリキャッシュ上限、単位:バイト。 | 32MB(3210241024) |
batchSize | Int | バッチ処理ログ件数の閾値。 | デフォルトではプラットフォームの特性に適応し、カスタマイズ可能です。 |
maxDatabaseSize | Long | データベース最大サイズ制限、単位:バイト。 | デバイスストレージに適応し、カスタマイズ可能です。 |
debuggable | BOOL | デバッグモードスイッチです。リリース時にはオフにする必要があります。 | NO |
pod 'TencentCloudLogProducer/Core', '2.0.0'pod 'TencentCloudLogProducer/NetWorkDiagnosis'#import "TencentCloudLogProducer/ClsLogSender.h"#import "TencentCloudLogProducer/CLSLogStorage.h"// 設定の初期化ClsLogSenderConfig *config = [ClsLogSenderConfig configWithEndpoint:@"your_endpoint"accessKeyId:@"your_accessKeyId"accessKey:@"your_accessKey"];// オプションパラメータを設定します(例)config.sendLogInterval = 5; // ログ送信間隔、デフォルト5秒config.maxMemorySize = 32 * 1024 * 1024; // メモリ上限、デフォルト32MBconfig.token = @"your_temp_token"; // 一時キー(オプション)// SDKを起動します。_sender = [LogSender sharedSender];[_sender setConfig:config];[_sender start];
import TencentCloudLogProducer// 設定の初期化let config = ClsLogSenderConfig(endpoint: "your_endpoint" ?? "",accessKeyId: "your_accessKeyId" ?? "",accessKey: "your_accessKey" ?? "")config.sendLogInterval = 5 // ログ送信間隔、デフォルト5秒config.maxMemorySize = 32 * 1024 * 1024 // メモリ上限、デフォルト32MBconfig.token = "your_temp_token" // 一時キー(オプション)// SDKを起動します。let sender = LogSender.shared()sender.setConfig(config)sender.start()
#import "ClsNetworkDiagnosis.h"#import "ClsAdapter.h"#import "ClsNetDiag.h"// 設定の初期化ClsConfig *config = [[ClsConfig alloc] init];config.debuggable = YES; // デバッグモード、リリース時は無効にすることを推奨します。config.endpoint = @"ap-guangzhou.cls.tencentcs.com";config.accessKeyId = @"your_accessKeyId";config.accessKeySecret = @"your_accessKeySecret";config.topicId = @"your_topicId";config.pluginAppId = @"your_pluginAppId";// カスタムパラメータを追加します(オプション)[config setUserId:@"user1"];[config setChannel:@"channel1"];[config setChannelName:@"公式チャネル"];[config setUserNick:@"テストユーザー"];[config setLongLoginNick:@"よく使うニックネーム"];[config setLongLoginUserId:@"long_login_user1"];[config setLoginType:@"wechat"];[config addCustomWithKey:@"customKey" andValue:@"testValue"];// プラグインマネージャーを初期化します。ClsAdapter *clsAdapter = [ClsAdapter sharedInstance];[clsAdapter addPlugin:[[CLSNetworkDiagnosisPlugin alloc] init]];[clsAdapter initWithCLSConfig:config];
import UIKitimport TencentCloudLogProducer// CLSOutputDelegateプロトコルを実装する出力クラスclass CLSWriter: NSObject, CLSOutputDelegate {func write(_ line: String!) {print("CLSWriter output: \\(line ?? "")")}}// 設定を初期化します。func initNetworkDiagnosis() {let config = ClsConfig()config.endpoint = "ap-guangzhou.cls.tencentcs.com"config.accessKeyId = "your_access_key_id"config.accessKeySecret = "your_access_key_secret"config.topicId = "your_topic_id"config.pluginAppId = "your_plugin_id"// オプション:カスタムパラメータconfig.userId = "user1"config.channel = "channel1"config.addCustom(withKey: "customKey1", andValue: "testValue")// ネットワークプローブプラグインを追加します。let clsAdapter = ClsAdapter.sharedInstance()let plugin = CLSNetworkDiagnosisPlugin()clsAdapter.add(unsafeBitCast(plugin, to: baseClsPlugin.self))clsAdapter.initWith(config)}
#import "TencentCloudLogProducer/ClsLogSender.h"#import "TencentCloudLogProducer/CLSLogStorage.h"#import "TencentCloudLogProducer/ClsLogs.pbobjc.h"// ログ内容を構築します。Log_Content *logContent = [Log_Content message];logContent.key = @"user_behavior";logContent.value = @"click_submit_button";// ログ項目を構築します(タイムスタンプは秒単位)。Log *logItem = [Log message];[logItem.contentsArray addObject:logContent];logItem.time = [@(System.currentTimeMillis() / 1000) longLongValue];// ローカルデータベースに書き込みます(自動的にバッチ処理送信をトリガーします)。[[CLSLogStorage sharedInstance] writeLog:logItemtopicId:@"your_topicId"completion:^(BOOL success, NSError *error) {if (success) {NSLog(@"ログ書き込み成功、送信待ち");} else {NSLog(@"ログ書き込み失敗:%@", error.localizedDescription);}}];
import TencentCloudLogProducer// ログ内容を構築します。let logContent = Log_Content()logContent.key = "user_behavior"logContent.value = "click_submit_button"// ログ項目を構築します(タイムスタンプは秒単位)。let logItem = Log()logItem.contentsArray.add(logContent)logItem.time = Int64(Date().timeIntervalSince1970)// ローカルデータベースに書き込みます(自動的にバッチ処理送信をトリガーします)。ClsLogStorage.sharedInstance().write(logItem, topicId: "your_topicId") { success, error inif success {print("ログ書き込み成功、送信待ち")} else {print("ログ書き込み失敗:error.debugDescription)")}}
// 方法1:基本Pingプローブ。[[CLSNetworkDiagnosisPlugin sharedInstance] ping:@"cloud.tencent.com"size:64output:selfcomplete:^(BOOL success, NSString *result) {NSLog(@"Pingプローブ結果:%@", result);}];// 方法2:タイムアウト時間とプローブ回数を指定したPingプローブ。[[CLSNetworkDiagnosisPlugin sharedInstance] ping:@"cloud.tencent.com"size:64task_timeout:3000output:selfcomplete:^(BOOL success, NSString *result) {NSLog(@"Pingプローブ結果:%@", result);} count:10];// 方法3:カスタムフィールド付きPingプローブ。NSMutableDictionary *customFields = [NSMutableDictionary dictionary];customFields[@"detect_scene"] = @"log_upload_failure";[[CLSNetworkDiagnosisPlugin sharedInstance] ping:@"cloud.tencent.com"size:64output:selfcomplete:^(BOOL success, NSString *result) {NSLog(@"Pingプローブ結果:%@", result);} customFiled:customFields];
//方法一:基本Pingプローブ。ClsNetworkDiagnosis.sharedInstance().ping("cloud.tencent.com",size: 64,output: CLSWriter()) { result inprint("Pingプローブ結果:\\(result?.description ?? "結果なし")")}// 方法2:タイムアウト時間とプローブ回数を指定したPingプローブ。ClsNetworkDiagnosis.sharedInstance().ping("cloud.tencent.com",size: 64,task_timeout: 3000, // タイムアウト時間:3000ミリ秒。output: CLSWriter(),complete: { result inprint("Pingプローブ結果:\\(result?.description ?? "結果なし")")},count: 10 // プローブ回数。)//方法3:カスタムフィールド付きPingプローブ。let customFields = NSMutableDictionary()customFields["detect_scene"] = "log_upload_failure"customFields["app_version"] = "1.0.0"ClsNetworkDiagnosis.sharedInstance().ping("cloud.tencent.com",size: 64,output: CLSWriter(),complete: { result inprint("Pingプローブ結果:\\(result?.description ?? "結果なし")")},customFiled: customFields)//方法4:完全なパラメータ付きPingプローブ。let customFields = NSMutableDictionary()customFields["detect_scene"] = "log_upload_failure"ClsNetworkDiagnosis.sharedInstance().ping("cloud.tencent.com",size: 64,task_timeout: 3000,output: CLSWriter(),complete: { result inguard let result = result else {print("Pingプローブ失敗")return}print("Pingプローブ結果:")print("- 平均遅延:\\(result.avgRtt ?? "") ms")print("- パケットロス率:\\(result.loss_rate ?? "") %")print("- 完全な結果:\\(result.description)")},count: 10,customFiled: customFields)
// 方法1:基本TCPPingプローブ。[[CLSNetworkDiagnosisPlugin sharedInstance] tcpPing:@"cloud.tencent.com"output:selfcomplete:^(BOOL success, NSString *result) {NSLog(@"TCPPingプローブ結果:%@", result);}];// 方法2:ポート、タイムアウト時間、プローブ回数を指定したTCPPingプローブ。[[CLSNetworkDiagnosisPlugin sharedInstance] tcpPing:@"cloud.tencent.com"port:80task_timeout:3000count:10output:selfcomplete:^(BOOL success, NSString *result) {NSLog(@"TCPPingプローブ結果:%@", result);}];// 方法3:カスタムフィールド付きTCPPingプローブ。NSMutableDictionary *customFields = [NSMutableDictionary dictionary];customFields[@"detect_scene"] = @"log_upload_failure";[[CLSNetworkDiagnosisPlugin sharedInstance] tcpPing:@"cloud.tencent.com"output:selfcomplete:^(BOOL success, NSString *result) {NSLog(@"TCPPingプローブ結果:%@", result);} customFiled:customFields];
//方法 1:基本TCPPingプローブ。ClsNetworkDiagnosis.sharedInstance().tcpPing("cloud.tencent.com",output: CLSWriter()) { result inprint("TCPPingプローブ結果:\\(result?.description ?? "結果なし")")}//方法 2:ポート、タイムアウト時間、プローブ回数を指定したTCPPingプローブ。ClsNetworkDiagnosis.sharedInstance().tcpPing("cloud.tencent.com",port: 80, // ターゲットポート。task_timeout: 3000, // タイムアウト時間:3000ミリ秒。count: 10, // プローブ回数。output: CLSWriter()) { result inprint("TCPPingプローブ結果:\\(result?.description ?? "結果なし")")}//方法 3:カスタムフィールド付きTCPPingプローブ。let customFields = NSMutableDictionary()customFields["detect_scene"] = "log_upload_failure"customFields["connection_type"] = "wifi"ClsNetworkDiagnosis.sharedInstance().tcpPing("cloud.tencent.com",output: CLSWriter(),complete: { result inprint("TCPPingプローブ結果:\\(result?.description ?? "結果なし")")},customFiled: customFields)//方法4:完全なパラメータ付きTCPPingプローブ。let customFields = NSMutableDictionary()customFields["detect_scene"] = "log_upload_failure"ClsNetworkDiagnosis.sharedInstance().tcpPing("cloud.tencent.com",port: 443, // HTTPSポート。task_timeout: 5000,count: 10,output: CLSWriter(),complete: { result inguard let result = result else {print("TCPPingプローブ失敗")return}print("TCPPingプローブ結果:")print("- 平均遅延:\\(result.avgRtt ?? "") ms")print("- 成功率:\\(result.success_rate ?? "") %")print("- 完全な結果:\\(result.description)")},customFiled: customFields)
// 方法1:基本TraceRouteプローブ。[[CLSNetworkDiagnosisPlugin sharedInstance] traceRoute:@"cloud.tencent.com"output:selfcomplete:^(BOOL success, NSString *result) {NSLog(@"TraceRouteプローブ結果:%@", result);}];// 方法2:最大ホップ数を指定したTraceRouteプローブ。[[CLSNetworkDiagnosisPlugin sharedInstance] traceRoute:@"cloud.tencent.com"output:selfcomplete:^(BOOL success, NSString *result) {NSLog(@"TraceRouteプローブ結果:%@", result);} maxTtl:30];// 方法3:カスタムフィールド付きTraceRouteプローブ。NSMutableDictionary *customFields = [NSMutableDictionary dictionary];customFields[@"detect_scene"] = @"log_upload_failure";[[CLSNetworkDiagnosisPlugin sharedInstance] traceRoute:@"cloud.tencent.com"output:selfcomplete:^(BOOL success, NSString *result) {NSLog(@"TraceRouteプローブ結果:%@", result);} customFiled:customFields];
// 方法1:基本TraceRouteプローブ。ClsNetworkDiagnosis.sharedInstance().traceRoute("cloud.tencent.com",output: CLSWriter()) { result inprint("TraceRouteプローブ結果:\\(result?.content ?? "結果なし")")}//方法2:最大ホップ数を指定したTraceRouteプローブ。ClsNetworkDiagnosis.sharedInstance().traceRoute("cloud.tencent.com",output: CLSWriter(),complete: { result inguard let result = result else {print("TraceRouteプローブ失敗")return}print("TraceRouteプローブ結果:")print("- ホップ数:\\(result.hop_count ?? 0)")print("- ルート詳細:\\(result.content ?? "")")},maxTtl: 30 // 最大ホップ数。)//方法3:カスタムフィールド付きTraceRouteプローブ。let customFields = NSMutableDictionary()customFields["detect_scene"] = "log_upload_failure"customFields["network_carrier"] = "China Mobile"ClsNetworkDiagnosis.sharedInstance().traceRoute("cloud.tencent.com",output: CLSWriter(),complete: { result inprint("TraceRouteプローブ結果:\\(result?.content ?? "結果なし")")},customFiled: customFields)//方法4:完全なパラメータによるTraceRouteプローブ。let customFields = NSMutableDictionary()customFields["detect_scene"] = "log_upload_failure"ClsNetworkDiagnosis.sharedInstance().traceRoute("cloud.tencent.com",output: CLSWriter(),complete: { result inguard let result = result else {print("TraceRouteプローブ失敗")return}print("TraceRouteプローブ結果:")print("- 完了状態:\\(result.status)")print("- ホップ数:\\(result.hop_count ?? 0)")print("- 詳細ルート:")print(result.content ?? "ルート情報なし")},maxTtl: 30,customFiled: customFields)
// 方法1:基本HttpPingプローブ。[[CLSNetworkDiagnosisPlugin sharedInstance] httping:@"https://ap-guangzhou.cls.tencentcs.com/ping"output:selfcomplate:^(BOOL success, NSString *result) {NSLog(@"HttpPingプローブ結果:%@", result);}];// 方法2:カスタムフィールド付きHttpPingプローブ。NSMutableDictionary *customFields = [NSMutableDictionary dictionary];customFields[@"detect_scene"] = @"log_upload_failure";[[CLSNetworkDiagnosisPlugin sharedInstance] httping:@"https://ap-guangzhou.cls.tencentcs.com/ping"output:selfcomplate:^(BOOL success, NSString *result) {NSLog(@"HttpPingプローブ結果:%@", result);} customFiled:customFields];
//方法1:基本プローブ。ClsNetworkDiagnosis.sharedInstance().httping("https://ap-guangzhou.cls.tencentcs.com/ping",output: CLSWriter()) { result inprint("HttpPingプローブ結果:\\(result?.description ?? "結果なし")")}//方法2:カスタムフィールド付きHttpPingプローブ。let customFields = NSMutableDictionary()customFields["detect_scene"] = "log_upload_failure"customFields["api_endpoint"] = "ap-guangzhou"ClsNetworkDiagnosis.sharedInstance().httping("https://ap-guangzhou.cls.tencentcs.com/ping",output: CLSWriter(),complate: { result inguard let result = result else {print("HttpPingプローブ失敗")return}print("HttpPingプローブ結果:")print("- HTTPステータスコード:\\(result.statusCode ?? 0)")print("- 応答時間:\\(result.responseTime ?? "") ms")print("- 完全な結果:\\(result.description)")},customFiled: customFields)iftshi
パラメータ名 | タイプ | 説明 | デフォルト値 |
endpoint | String | - | |
accessKeyId(secretId) | String | - | |
accessKeySecret(secretKey) | String | - | |
topicId | String | - | |
token | String | 一時キー(オプション)。 | - |
lingerMs | Long | バッチ処理の滞留時間、単位:ミリ秒。 | 2000 |
TotalSizeInBytes | Long | メモリキャッシュ上限、単位:バイト。 | 100MB(100*1024*1024) |
MaxBatchSize | Long | 1バッチあたりのログ最大サイズ、単位:バイト。 | 512KB(512*1024) |
MaxBatchCount | Int | 1バッチあたりの最大ログ件数。 | 4096 |
MaxSendThreadCount | Long | 最大同時送信スレッド数。 | 50 |
MaxBlockSec | Int | 送信ブロック最大時間、単位:秒。 | 60 |
Retries | Int | 送信失敗時の再試行回数。 | 10 |
BaseRetryBackoffMs | Long | 初回再試行バックオフ時間、単位:ミリ秒。 | 100 |
MaxRetryBackoffMs | Long | 再試行の最大バックオフ時間、単位:ミリ秒。 | 50000 |
MaxReservedAttempts | Int | 保持される送信試行記録数。 | 11 |
debuggable | Boolean | デバッグモードスイッチです。リリース時にはオフにする必要があります。 | false |
implementation(group: 'com.tencentcloudapi.cls', name: 'tencentcloud-cls-sdk-android', version: '2.0.3')implementation(group: 'com.tencentcloudapi.cls', name: 'cls-network-diagnosis-reporter-android', version: '2.0.3')<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.INTERNET" />
<?xml version="1.0" encoding="utf-8"?><network-security-config><domain-config cleartextTrafficPermitted="true"><domain includeSubdomains="true">ap-guangzhou.cls.tencentcs.com</domain></domain-config></network-security-config>
android:networkSecurityConfig="@xml/network_security_config"
-keep class net.jpountz.lz4.** { *; }
import com.tencentcloudapi.cls.AsyncProducerClient;import com.tencentcloudapi.cls.AsyncProducerConfig;import com.tencentcloudapi.cls.NetworkUtils;public class MyApplication extends Application {private AsyncProducerClient client;@Overridepublic void onCreate() {super.onCreate();String endpoint = "ap-guangzhou.cls.tencentcs.com";String secretId = "your_accessKeyId";String secretKey = "your_accessKeySecret";String topicId = "your_topicId";// 設定の初期化AsyncProducerConfig config = new AsyncProducerConfig(endpoint, secretId, secretKey, "", NetworkUtils.getLocalMachineIP());config.setLingerMs(2000); // バッチ処理の滞留時間、デフォルト2秒config.setMaxBatchSize(512 * 1024); // 単一バッチのログ最大サイズ、デフォルト512KBconfig.setTotalSizeInBytes(100 * 1024 * 1024); // キャッシュ上限、デフォルト100MBconfig.setRetries(10); // 再試行回数、デフォルト10回config.setMaxSendThreadCount(50); // 最大同時実行スレッド数、デフォルト50config.setMaxBlockSec(60); // 送信ブロックの最大時間、デフォルト60秒// クライアントインスタンスを構築します。client = new AsyncProducerClient(config);}public AsyncProducerClient getClient() {return client;}}
import com.tencentcloudapi.cls.adapter.CLSAdapter;import com.tencentcloudapi.cls.config.CLSConfig;import com.tencentcloudapi.cls.plugin.netdiagnosis.CLSNetDiagnosisPlugin;public class MyApplication extends Application {@Overridepublic void onCreate() {super.onCreate();// プラグインマネージャーを初期化します。CLSAdapter adapter = CLSAdapter.getInstance();adapter.addPlugin(new CLSNetDiagnosisPlugin());// 設定の初期化CLSConfig config = new CLSConfig(this);config.endpoint = "ap-guangzhou.cls.tencentcs.com";config.accessKeyId = "your_accessKeyId";config.accessKeySecret = "your_accessKeySecret";config.pluginAppId = "123456";config.topicId = "your_topicId";config.debuggable = true; // リリース時は無効にすることを推奨します。config.setAppName("your_app_name");config.setAppVersion("1.0.0");config.setUserId("user1");config.setChannel("channel1");config.setChannelName("公式チャネル");config.setUserNick("テストユーザー");config.setLongLoginNick("よく使うニックネーム");config.setLongLoginUserId("long_login_user1");config.setLoginType("wechat");config.addCustomWithKey("customKey", "testValue");adapter.init(config);}}
import com.tencentcloudapi.cls.LogItem;import com.tencentcloudapi.cls.LogContent;import java.util.ArrayList;import java.util.List;public class LogUploadUtils {public static void sendLog(AsyncProducerClient client, String topicId) {// ログ内容リストを構築します。List<LogContent> logContents = new ArrayList<>();LogContent content1 = new LogContent();content1.setKey("__CONTENT__");content1.setValue("hello world");LogContent content2 = new LogContent();content2.setKey("city");content2.setValue("guangzhou");LogContent content3 = new LogContent();content3.setKey("logNo");content3.setValue("10001");LogContent content4 = new LogContent();content4.setKey("__PKG_LOGID__");content4.setValue(String.valueOf(System.currentTimeMillis()));logContents.add(content1);logContents.add(content2);logContents.add(content3);logContents.add(content4);// ログ項目を構築します(タイムスタンプは秒単位)。LogItem logItem = new LogItem((int) (System.currentTimeMillis() / 1000));logItem.setContents(logContents);// ログを一括アップロードします。List<LogItem> logItems = new ArrayList<>();logItems.add(logItem);client.putLogs(topicId, logItems, result -> {if (result.isSuccess()) {System.out.println("ログアップロード成功");} else {System.out.println("ログアップロード失敗:" + result.getErrorMsg());}});}}
import com.tencentcloudapi.cls.plugin.netdiagnosis.CLSNetDiagnosis;public class NetworkDetectUtils {public static void pingDetect() {// 方法1:基本Pingプローブ。CLSNetDiagnosis.getInstance().ping("www.tencentcloud.com", new CLSNetDiagnosis.Output() {@Overridepublic void write(String line) {System.out.println(line);}}, new CLSNetDiagnosis.Callback() {@Overridepublic void onComplete(String result) {CLSLog.d("PingResult", String.format("ping result: %s", result));}});// 方法2:プローブ回数とパケットサイズを指定したPingプローブ。CLSNetDiagnosis.getInstance().ping("www.tencentcloud.com", 10, 64, new CLSNetDiagnosis.Output() {@Overridepublic void write(String line) {System.out.println(line);}}, new CLSNetDiagnosis.Callback() {@Overridepublic void onComplete(String result) {CLSLog.d("PingResult", String.format("ping result: %s", result));}});}}
import com.tencentcloudapi.cls.plugin.netdiagnosis.CLSNetDiagnosis;public class NetworkDetectUtils {public static void tcpPingDetect() {// 方法1:基本的なTCPPingプローブ。CLSNetDiagnosis.getInstance().tcpPing("www.tencentcloud.com", 80, new CLSNetDiagnosis.Output() {@Overridepublic void write(String line) {System.out.println(line);}}, new CLSNetDiagnosis.Callback() {@Overridepublic void onComplete(String result) {CLSLog.d("TCPPingResult", String.format("tcpPing result: %s", result));}});// 方法2:プローブ回数とタイムアウト時間を指定したTCPPingプローブ。CLSNetDiagnosis.getInstance().tcpPing("www.tencentcloud.com", 80, 10, 3000, new CLSNetDiagnosis.Output() {@Overridepublic void write(String line) {System.out.println(line);}}, new CLSNetDiagnosis.Callback() {@Overridepublic void onComplete(String result) {CLSLog.d("TCPPingResult", String.format("tcpPing result: %s", result));}});}}
import com.tencentcloudapi.cls.plugin.netdiagnosis.CLSNetDiagnosis;public class NetworkDetectUtils {public static void traceRouteDetect() {// 方法1:基本的なTraceRouteプローブ。CLSNetDiagnosis.getInstance().traceroute("www.tencentcloud.com", new CLSNetDiagnosis.Output() {@Overridepublic void write(String line) {System.out.println(line);}}, new CLSNetDiagnosis.Callback() {@Overridepublic void onComplete(String result) {CLSLog.d("TraceRouteResult", String.format("traceRoute result: %s", result));}});// 方法2:最大ホップ数と各ホップのプローブ回数を指定したTraceRouteプローブ。CLSNetDiagnosis.getInstance().traceroute("www.tencentcloud.com", 30, 3, new CLSNetDiagnosis.Output() {@Overridepublic void write(String line) {System.out.println(line);}}, new CLSNetDiagnosis.Callback() {@Overridepublic void onComplete(String result) {CLSLog.d("TraceRouteResult", String.format("traceRoute result: %s", result));}});}}
import com.tencentcloudapi.cls.plugin.netdiagnosis.CLSNetDiagnosis;public class NetworkDetectUtils {public static void httpPingDetect() {CLSNetDiagnosis.getInstance().httpPing("https://www.tencentcloud.com", new CLSNetDiagnosis.Output() {@Overridepublic void write(String line) {System.out.println(line);}}, new CLSNetDiagnosis.Callback() {@Overridepublic void onComplete(String result) {CLSLog.d("HttpPingResult", String.format("httpPing result: %s", result));}});}}
フィードバック