文档首页/ 设备接入 IoTDA/ API参考/ 应用侧API参考/ API/ 泛协议配置管理/ 查询泛协议配置详情 - ShowProtocolConfig
更新时间:2026-09-02 GMT+08:00

查询泛协议配置详情 - ShowProtocolConfig

功能介绍

提供查询泛协议配置详情的功能。

调用方法

请参见如何调用API

授权信息

账号具备所有API的调用权限,如果使用账号下的IAM用户调用当前API,该IAM用户需具备调用API所需的权限。

  • 如果使用角色与策略授权,具体权限要求请参见权限和授权项
  • 如果使用身份策略授权,需具备如下身份策略权限。

    授权项

    访问级别

    资源类型(*为必须)

    条件键

    别名

    依赖的授权项

    iotda:protocolconfigs:query

    Read

    instance *

    • g:EnterpriseProjectId

    • g:ResourceTag/<tag-key>

    -

    -

URI

GET /v5/iot/{project_id}/protocol-configs/{protocol_id}

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

参数说明 :项目ID。获取方法请参见 获取项目ID

protocol_id

String

参数说明:泛协议配置ID。

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

Instance-Id

String

参数说明:实例ID。物理多租下各实例的唯一标识,建议携带该参数,在使用专业版时必须携带该参数。您可以在IoTDA管理控制台界面,选择左侧导航栏“总览”页签查看当前实例的ID,具体获取方式请参考查看实例详情

响应参数

状态码:200

表3 响应Body参数

参数

参数类型

描述

protocol_id

String

参数说明:泛协议配置ID。

port

Integer

参数说明:泛协议配置的端口号。

keepalive_timeout

Integer

参数说明:连接空闲断链时间,单位(s)。

protocol_type

String

参数说明:协议类型。

取值范围:TCP:通用TCP协议接入

description

String

参数说明:泛协议的描述信息。

取值范围:长度不超过2048,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合

ssl_enable

Boolean

参数说明:是否开启tls加密传输。

frame_decode_configs

Array of FrameDecodeConfig objects

参数说明:码流拆包组包配置列表。

codec_mode

String

参数说明:编解码类型。

取值范围

  • FGS:将编解码插件以函数形式部署到FunctionGraph。

  • PLUGIN:将编解码插件以OSGI插件形式部署到设备接入平台,使用该方式需提工单联系技术支持。

func_urn

String

参数说明:函数的URN(Uniform Resource Name),唯一标识函数,采用FGS进行编解码的对应函数地址。

取值范围:长度不超过256,只允许字母、数字、下划线(_)、连接符(-)、分隔符(:)的组合。

create_time

String

参数说明:在物联网平台查询自定义鉴权的时间。格式:yyyyMMdd'T'HHmmss'Z',如:20151212T121212Z。

update_time

String

参数说明:在物联网平台更新查询自定义鉴权的时间。格式:yyyyMMdd'T'HHmmss'Z',如:20151212T121212Z。

表4 FrameDecodeConfig

参数

参数类型

描述

frame_decode_type

String

参数说明:拆包组包规则。

取值范围

  • DELIMITER:通过特定分隔符(如逗号、换行符等)来拆分或组合数据包。

  • FIXED_LENGTH:按照固定的字节长度,对每一帧数据进行拆分或组合。

  • FIELD_LENGTH:每一帧的长度可变,通过数据包中携带的长度字段信息进行拆分或组合。

max_frame_length

Integer

参数说明:单个帧的最大长度。拆包规则为DELIMITER|FIELD_LENGTH时,该参数必选。

delimiter

String

参数说明:分隔符,hex string格式。拆包规则为DELIMITER,该参数必选。

fixed_frame_length

Integer

参数说明:单个帧的固定长度。拆包规则为FIXED_LENGTH,该参数必选。

field_offset

Integer

参数说明:指定长度字段在数据包中的起始位置(偏移量)。拆包规则为FIELD_LENGTH ,该参数必选。

field_length

Integer

参数说明:指定长度字段占用的字节数。拆包规则为FIELD_LENGTH,该参数必选。

initial_bytes

String

参数说明:起始字符,hex string格式。拆包规则为FIXED_LENGTH,该参数可选。

adjustment_length

Integer

参数说明:调整长度字段的值。拆包规则为FIELD_LENGTH,该参数可选。

initial_bytes_to_strip

Integer

参数说明:指定解码后从数据包中去掉的字节数。通常用于去掉长度字段,只保留数据内容。拆包规则为FIELD_LENGTH,该参数可选。

请求示例

查询指定id的泛协议配置详情

GET https://{endpoint}/v5/iot/{project_id}/protocol-configs/{protocol_id}

响应示例

状态码:200

OK

{
  "protocol_id" : "9739d740-4da1-46e1-8075-77145265cd92",
  "port" : 6886,
  "protocol_type" : "TCP",
  "description" : "tcp protocol",
  "frame_decode_configs" : [ {
    "frame_decode_type" : "DELIMITER",
    "max_frame_length" : 200,
    "delimiter" : "]"
  } ],
  "codec_mode" : "FGS",
  "keepalive_timeout" : 600,
  "ssl_enable" : true,
  "func_urn" : "urn:fss:cn-north-5:d92d9c5eb8e347b5bb31ecfe5bc0c4e1:function:default:mqtt_auth:latest",
  "create_time" : "20231031T070547Z",
  "update_time" : "20231031T070547Z"
}

SDK代码示例

SDK代码示例如下。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package com.huaweicloud.sdk.test;

import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.AbstractCredentials;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.core.region.Region;
import com.huaweicloud.sdk.iotda.v5.*;
import com.huaweicloud.sdk.iotda.v5.model.*;


public class ShowProtocolConfigSolution {

    public static void main(String[] args) {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        String ak = System.getenv("CLOUD_SDK_AK");
        String sk = System.getenv("CLOUD_SDK_SK");
        // ENDPOINT:请在控制台的"总览"界面的"平台接入地址"中查看“应用侧”的https接入地址。
        String iotdaEndpoint = "<YOUR ENDPOINT>";
        String projectId = "{project_id}";

        ICredential auth = new BasicCredentials()
                .withProjectId(projectId)
                // 标准版/企业版需要使用衍生算法,基础版请删除配置"withDerivedPredicate";
                .withDerivedPredicate(AbstractCredentials.DEFAULT_DERIVED_PREDICATE) // Used in derivative ak/sk authentication scenarios
                .withAk(ak)
                .withSk(sk);

        IoTDAClient client = IoTDAClient.newBuilder()
                .withCredential(auth)
                // 标准版/企业版:需自行创建Region对象,基础版:请使用IoTDARegion的region对象,如"withRegion(IoTDARegion.CN_NORTH_4)"
                .withRegion(new Region("cn-north-4", iotdaEndpoint))
                .build();
        ShowProtocolConfigRequest request = new ShowProtocolConfigRequest();
        request.withProtocolId("{protocol_id}");
        try {
            ShowProtocolConfigResponse response = client.showProtocolConfig(request);
            System.out.println(response.toString());
        } catch (ConnectionException e) {
            e.printStackTrace();
        } catch (RequestTimeoutException e) {
            e.printStackTrace();
        } catch (ServiceResponseException e) {
            e.printStackTrace();
            System.out.println(e.getHttpStatusCode());
            System.out.println(e.getRequestId());
            System.out.println(e.getErrorCode());
            System.out.println(e.getErrorMsg());
        }
    }
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# coding: utf-8

import os
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkcore.auth.credentials import DerivedCredentials
from huaweicloudsdkcore.region.region import Region as coreRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkiotda.v5 import *

if __name__ == "__main__":
    # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak = os.environ["CLOUD_SDK_AK"]
    sk = os.environ["CLOUD_SDK_SK"]
    # ENDPOINT:请在控制台的"总览"界面的"平台接入地址"中查看“应用侧”的https接入地址,下面创建Client时需要使用自行创建的Region对象,基础版:请选择IoTDAClient中的Region对象 如: IoTDAClient.new_builder().with_region(IoTDARegion.CN_NORTH_4)
    endpoint = "<YOUR ENDPOINT>";
    projectId = "{project_id}"

    credentials = BasicCredentials(ak, sk, projectId).with_derived_predicate(DerivedCredentials.get_default_derived_predicate())

    client = IoTDAClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(coreRegion(id="cn-north-4", endpoint=endpoint)) \
        .build()

    try:
        request = ShowProtocolConfigRequest()
        request.protocol_id = "{protocol_id}"
        response = client.show_protocol_config(request)
        print(response)
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package main

import (
	"fmt"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
    iotda "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iotda/v5"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iotda/v5/model"
    region "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/region"
    core_auth "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth"
)

func main() {
    // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak := os.Getenv("CLOUD_SDK_AK")
    sk := os.Getenv("CLOUD_SDK_SK")
    // endpoint:请在控制台的"总览"界面的"平台接入地址"中查看"应用侧"的https接入地址
    endpoint := "<YOUR ENDPOINT>"
    projectId := "{project_id}"

    auth, err := basic.NewCredentialsBuilder().
        WithAk(ak).
        WithSk(sk).
        WithProjectId(projectId).
        // 企业版/标准版需要使用衍生算法,基础版请删除该配置"WithDerivedPredicate"
        WithDerivedPredicate(core_auth.GetDefaultDerivedPredicate()). // Used in derivative ak/sk authentication scenarios
        SafeBuild()

    if err != nil {
        fmt.Println(err)
        return
    }

    hcClient, err := iotda.IoTDAClientBuilder().
         // 标准版/企业版需要自行创建region,基础版使用IoTDARegion中的region对象
         WithRegion(region.NewRegion("cn-north-4", endpoint)).
         WithCredential(auth).
         SafeBuild()


    if err != nil {
        fmt.Println(err)
        return
    }

    client := iotda.NewIoTDAClient(hcClient)

    request := &model.ShowProtocolConfigRequest{}
	request.ProtocolId = "{protocol_id}"
	response, err := client.ShowProtocolConfig(request)
	if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。

状态码

状态码

描述

200

OK

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

500

Internal Server Error

错误码

请参见错误码