通过 HTTP POST 发布 MQTT 消息

最近更新时间:2025-03-12 16:04:52

我的收藏

概述

客户端可以通过 HTTP(s) POST 方式发送 REST 请求发布 MQTT 消息。 该方式支持 HTTP 1.0和1.1协议。

URL

实例支持 HTTP URL 如下:
http(s)://${instance-access-pooint}/topics/${url-encoded-topic-name}?qos=${qos}&retained=${retained}&client_id=${ClientId}&username=${Username}
变量
语义
示例值
可选
instance-access-point
实例接入点地址,从 消息队列 MQTT 版 控制台 单击资源管理 > 集群管理 > 实例 ID 进入基本信息页面获取。
mqtt-example-sh-public.mqtt.tencenttdmq.com
url-encoded-topic-name
要发送的 Topic 名称,URL encoded。
home
qos
发送 MQTT 消息时选择 QoS,默认值为1,即 at-least-once。
1
retained
发送的消息是否是 retained 消息。
false
client_id
使用的 client-id 发送 MQTT 消息,参与授权验证。
如果在一机一证场景,使用证书 Common Name 字段。
其它场景默认值是 http-${connection-id}。
curl001
username
连接、发送时使用的用户名,参与授权验证。
如果使用 Basic Authentication Header,取 Basic Authentication Header 中用户名部分。
SampleUser

认证

目前支持 Basic HTTP Authentication 和基于 X509 证书的“一机一证”两种认证方式。暂未支持基于 JWT 的认证方式。
说明:
Basic HTTP Authentication
In basic HTTP authentication, a request contains a header field in the form of Authorization: Basic <credentials>, where <credentials> is the Base64 encoding of ID and password joined by a single colon ':'.

示例 1

缺省 username 字段。
curl --verbose --request POST -H "Authorization: Basic dXNlcjA6c2VjcmV0MA==" --data "{ \\"message\\": \\"Hello, world\\" }" "http://mqtt.cloud.tencent.com/topics/home?qos=1&client_id=curl-x&retained=true"

示例 2

提供 HTTP(s) 发送时使用的 username。
注意:
Username 会参与 ACL 授权。
curl --verbose -k --request POST -H "Authorization: Basic dXNlcjA6c2VjcmV0MA==" --data "{ \\"message\\": \\"Hello, world\\" }" "https://mqtt.cloud.tencent.com/topics/home?qos=1&client_id=curl-x&retained=true&username=sample-user"

BYOC

支持基于 X509一机一证使用场景。

示例 1

说明:
客户端信任的证书为:CA.crt。
客户端证书链为:client.chain.crt。
客户端私钥为:client.pkcs8.key。
curl --tlsv1.2 \\
--cacert CA.crt \\
--cert client.chain.crt \\
--key client.pkcs8.key \\
--verbose \\
--request POST \\
--data "{ \\"message\\": \\"Hello, world\\" }" \\
"https://mqtt.cloud.tencent.com/topics/home?qos=1"

授权

HTTP POST 方式类似 WebSocket,正常参与所有的授权流程。如果使用 HTTP 1.0协议,每次发送都会执行完整的 CONNECT,PUBLISH 流程,也会执行对应的的鉴权、授权操作。