跳到主要内容

getEndpoints

前置 / 配套

签名

public static List<EndpointDescription> getEndpoints(String endpointUrl);
public static List<EndpointDescription> getEndpoints(String endpointUrl, int timeoutMs);

通过临时 SecureChannel (None mode) 连服务端, 拉 Endpoint 列表后立即断开. 不需要 Session. 默认超时 10 秒.

EndpointDescription 字段

方法类型说明
getEndpointUrl()String实际 endpoint URL
getSecurityMode()Enums.MessageSecurityModeNone / Sign / SignAndEncrypt
getSecurityPolicyUri()String算法套件 URI
getServerCertificate()byte[]服务端证书 (DER)
getServerApplicationUri()StringServer 应用 URI
getServerProductUri()StringServer 产品 URI
getServerApplicationName()StringServer 应用名
getServerApplicationType()int0=Server / 1=Client / 2=ClientAndServer / 3=DiscoveryServer
getUserTokens()List<UserTokenPolicy>支持的登录方式
getTransportProfileUri()String传输 Profile (通常 UA-TCP)
getSecurityLevel()byte服务端推荐优先级

UserTokenPolicy 字段

方法说明
getPolicyId()服务端给的 ID, 客户端激活时传回
getTokenType()Enums.UserTokenType Anonymous / Username / Certificate / Issued

用法

List<EndpointDescription> endpoints =
OpcUaDiscovery.getEndpoints("opc.tcp://server:4840");

System.out.println("Server has " + endpoints.size() + " endpoints:");
for (EndpointDescription ep : endpoints) {
System.out.println();
System.out.println(" URL: " + ep.getEndpointUrl());
System.out.println(" Mode: " + ep.getSecurityMode());
System.out.println(" Policy: " + ep.getSecurityPolicyUri());
System.out.println(" Tokens:");
for (UserTokenPolicy t : ep.getUserTokens()) {
System.out.println(" - " + t.getTokenType() + " (PolicyId=" + t.getPolicyId() + ")");
}
}

典型输出

Server has 4 endpoints:

URL: opc.tcp://server:4840
Mode: None
Policy: http://opcfoundation.org/UA/SecurityPolicy#None
Tokens:
- Anonymous

URL: opc.tcp://server:4840
Mode: Sign
Policy: http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256
Tokens:
- Anonymous
- Username

URL: opc.tcp://server:4840
Mode: SignAndEncrypt
Policy: http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256
Tokens:
- Username
- Certificate

服务端通常暴露多个组合 (None / Sign / SignAndEncrypt × Anonymous / Username / Certificate), 客户端按需求挑.


异常

异常含义
OpcUaException(BadCommunicationError)网络 / 服务端不可达
OpcUaException(BadServiceUnsupported)服务端不支持 Discovery (罕见)

下一步