implementation(group: 'com.tencentcloudapi.cls', name: 'tencentcloud-cls-sdk-android', version: '3.0.1')implementation(group: 'com.tencentcloudapi.cls', name: 'cls-network-diagnosis-reporter-android', version: '3.0.1')
Dependency | Description |
tencentcloud-cls-sdk-android | Core SDK responsible for reporting detection results to CLS. |
cls-network-diagnosis-reporter-android | Network detection plugin that provides capabilities such as HTTP Ping, DNS, Ping, MTR, and TCP Ping. |
<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<?xml version="1.0" encoding="utf-8"?><network-security-config><domain-config cleartextTrafficPermitted="true"><!-- Replace with the actual CLS domain name as needed --><domain includeSubdomains="true">ap-guangzhou.cls.tencentcs.com</domain></domain-config></network-security-config>
<application> Tag in the AndroidManifest.xml file.<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.tencentcloudapi.cls"><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" /><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:networkSecurityConfig="@xml/network_security_config"><activityandroid:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>
private void initCls(Context context) {// 1. Initialize the core SDKClsConfigOptions clsConfigOptions = new ClsConfigOptions("https://ap-guangzhou-open.cls.tencentcs.com","[log topic ID]",new Credential("[secret_id]", "[secret_key]"));clsConfigOptions.enableLog(true);clsConfigOptions.addTag("cls_android", "3.0.1");ClsDataAPI.startWithConfigOptions(context, clsConfigOptions);// 2. Create and configure the network quality detection pluginINetworkDiagnosisPlugin clsNetDiagnosisPlugin = new NetworkDiagnosisPlugin();clsNetDiagnosisPlugin.addCustomField("env", "production"); // Optional: Add a custom fieldclsNetDiagnosisPlugin.setAppCredentialToken("[mobile access Token]"); // Obtain it from the CLS console// 3. Register and start the pluginClsDataAPI.sharedInstance(context).addPlugin(clsNetDiagnosisPlugin).startPlugin(context);}
Methodology | Description |
addCustomField(String key, String value) | Adds custom fields and reports them along with the detection results. |
setAppCredentialToken(String token) | Sets the mobile access Token. |
-keep class net.jpountz.lz4.** { *; }
public void clsHttpPing(Context context) throws NoSuchAlgorithmException {INetworkDiagnosis.HttpRequest request = new INetworkDiagnosis.HttpRequest();request.domain = "https://ap-guangzhou.cls.tencentcs.com"; // Required: Target URLrequest.ip = "1.2.3.4"; // Optional: Specify the target IP (bypassing DNS)request.headerOnly = true; // Optional: Retrieve only the response headers (default: false)request.downloadBytesLimit = 1024; // Optional: Limit the download bytes (default: 64KB)request.timeout = 30 * 1000; // Optional: Timeout duration in milliseconds (default: 30000ms)request.maxTimes = 3; // Optional: Number of detection attempts (default: 10)request.multiplePortsDetect = false; // Optional: Whether to perform multi-port detection (default: true)// Optional: SSL certificate verification configurationrequest.credential = new INetworkDiagnosis.HttpCredential(getSSLContext(context), null);// Optional: Custom extension fieldsrequest.extension = new HashMap<String, String>() {{put("custom_field", "httpPing");}};// Without callbackCLSNetworkDiagnosis.getInstance().http(request);// With callbackCLSNetworkDiagnosis.getInstance().http(request, new INetworkDiagnosis.Callback() {@Overridepublic void onComplete(INetworkDiagnosis.Response response) {CLSLog.i("HTTP", response.content);}});}
Field | Type | Default Value | Required | Description |
domain | String | - | Required | Target URL, which must include the protocol header (http:// or https://). |
ip | String | null | Optional | Specify the target IP address to skip DNS resolution and connect directly. |
headerOnly | boolean | false | Optional | Whether to request only the response headers |
downloadBytesLimit | int | 65536(64KB) | Optional | Limits the number of bytes to download. A value of 0 indicates no limit. |
credential | HttpCredential | null | Optional | SSL certificate verification configuration, which includes SSLContext and X509TrustManager. |
timeout | int | 30000 (30 seconds) | Optional | Request timeout interval, in milliseconds. |
maxTimes | int | 10 | Optional | Number of probes |
size | int(byte) | 64 | Optional | Probe packet size |
multiplePortsDetect | boolean | true | Optional | Whether to enable multi-port detection |
extension | Map<String, String> | null | Optional | Custom extension fields, which are reported along with the results. |
public void clsDNSPing() {INetworkDiagnosis.DnsRequest request = new INetworkDiagnosis.DnsRequest();request.domain = "ap-guangzhou-open.cls.tencentcs.com"; // Required: Target domainrequest.type = INetworkDiagnosis.DNS_TYPE_IPv4; // Optional: DNS type, "A" (IPv4) or "AAAA" (IPv6), default: "A"request.nameServer = "8.8.8.8"; // Optional: Specify the DNS server addressrequest.timeout = 2000; // Optional: Timeout duration in milliseconds (default: 2000ms)request.extension = new HashMap<String, String>() {{put("custom_field", "dns");}};// Without callbackCLSNetworkDiagnosis.getInstance().dns(request);// With callbackCLSNetworkDiagnosis.getInstance().dns(request, new INetworkDiagnosis.Callback() {@Overridepublic void onComplete(INetworkDiagnosis.Response response) {CLSLog.i("DNS", response.content);}});}
Field | Type | Default Value | Required | Description |
domain | String | - | Required | Target domain name |
type | String | "A" | Optional | DNS query type: "A" (IPv4) or "AAAA" (IPv6) |
nameServer | String | null | Optional | Specify the DNS server address. If left empty, the system default DNS is used. |
timeout | int | 2000 | Optional | Query timeout interval, in milliseconds. |
size | int(byte) | 64 | Optional | Probe packet size |
multiplePortsDetect | boolean | true | Optional | Whether to enable multi-port detection |
extension | Map<String, String> | null | Optional | Custom extension fields |
public void clsPing() {INetworkDiagnosis.PingRequest request = new INetworkDiagnosis.PingRequest();request.domain = "ap-guangzhou-open.cls.tencentcs.com"; // Required: Target domainrequest.size = 64; // Optional: Probe packet size in bytes (default: 64)request.maxTimes = -1; // Optional: Number of detection attempts (default: 10)request.timeout = 2000; // Optional: Timeout duration in milliseconds (default: 2000ms)request.multiplePortsDetect = true; // Optional: Whether to perform multi-port detection (default: true)request.extension = new HashMap<String, String>() {{put("custom_field", "ping");}};// Without callbackCLSNetworkDiagnosis.getInstance().ping(request);// With callbackCLSNetworkDiagnosis.getInstance().ping(request, new INetworkDiagnosis.Callback() {@Overridepublic void onComplete(INetworkDiagnosis.Response response) {CLSLog.i("Ping", response.content);}});}
Field | Type | Default Value | Required | Description |
domain | String | - | Required | Target domain name or IP |
size | int(byte) | 64 | Optional | ICMP probe packet size |
maxTimes | int | 10 | Optional | Number of probes |
timeout | int | 2000 | Optional | Timeout interval for a single probe, in milliseconds. |
multiplePortsDetect | boolean | true | Optional | Whether to enable multi-port detection |
extension | Map<String, String> | null | Optional | Custom extension fields |
public void clsMTR() {INetworkDiagnosis.MtrRequest request = new INetworkDiagnosis.MtrRequest();request.domain = "ap-guangzhou-open.cls.tencentcs.com"; // Required: Target domainrequest.protocol = INetworkDiagnosis.MtrRequest.Protocol.ICMP; // Optional: Detection protocol (default: ALL)request.maxTTL = 30; // Optional: Maximum hop count (default: 30)request.maxPaths = 1; // Optional: Maximum number of paths (default: 1)request.maxTimes = 10; // Optional: Number of detection attempts per hop (default: 10)request.timeout = 2000; // Optional: Timeout duration in milliseconds (default: 2000ms)request.multiplePortsDetect = true; // Optional: Whether to perform multi-port detection (default: true)request.extension = new HashMap<String, String>() {{put("custom_field", "mtr");}};// Without callbackCLSNetworkDiagnosis.getInstance().mtr(request);// With callbackCLSNetworkDiagnosis.getInstance().mtr(request, new INetworkDiagnosis.Callback() {@Overridepublic void onComplete(INetworkDiagnosis.Response response) {CLSLog.i("MTR", response.content);}});}
Field | Type | Default Value | Required | Description |
domain | String | - | Required | Target domain name or IP |
protocol | Protocol | Protocol.ALL | Optional | Probing protocol: ALL (all), ICMP, UDP |
maxTTL | int | 30 | Optional | Maximum number of router hops (TTL) |
maxPaths | int | 1 | Optional | Maximum number of probe paths |
maxTimes | int | 10 | Optional | Number of probes per hop |
timeout | int | 2000 | Optional | Timeout interval for a single probe, in milliseconds. |
size | int(byte) | 64 | Optional | Probe packet size |
multiplePortsDetect | boolean | true | Optional | Whether to enable multi-port detection |
extension | Map<String, String> | null | Optional | Custom extension fields |
public void clsTcpPing() {INetworkDiagnosis.TcpPingRequest request = new INetworkDiagnosis.TcpPingRequest();request.domain = "ap-guangzhou-open.cls.tencentcs.com"; // Required: Target domainrequest.port = 80; // Required: Target portrequest.payload = "hello"; // Optional: Probe data to sendrequest.maxTimes = -1; // Optional: Number of detection attempts (default: 10)request.timeout = 2000; // Optional: Timeout duration in milliseconds (default: 2000ms)request.size = 64; // Optional: Probe packet size in bytes (default: 64)request.multiplePortsDetect = true; // Optional: Whether to perform multi-port detection (default: true)request.extension = new HashMap<String, String>() {{put("custom_field", "tcpPing");}};// Without callbackCLSNetworkDiagnosis.getInstance().tcpPing(request);// With callbackCLSNetworkDiagnosis.getInstance().tcpPing(request, new INetworkDiagnosis.Callback() {@Overridepublic void onComplete(INetworkDiagnosis.Response response) {CLSLog.i("TcpPing", response.content);}});}
Field | Type | Default Value | Required | Description |
domain | String | - | Required | Target domain name or IP address |
port | int | -1 | Required | Target port number |
payload | String | null | Optional | Data content sent during probing |
maxTimes | int | 10 | Optional | Number of probes |
timeout | int | 2000 | Optional | Timeout interval for a single probe, in milliseconds. |
size | int(byte) | 64 | Optional | Probe packet size |
multiplePortsDetect | boolean | true | Optional | Whether to enable multi-port detection |
extension | Map<String, String> | null | Optional | Custom extension fields |
Apakah halaman ini membantu?
Anda juga dapat Menghubungi Penjualan atau Mengirimkan Tiket untuk meminta bantuan.
masukan