我正在尝试使用从订阅查询到AWS appsync的预签名url返回来创建mqtt连接。
预签名的网址如下所示:
wss://iotendpoint-ats.iot.us-west-2.amazonaws.com/mqtt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AAAAAAAAAAAA%2F20200203%2Fus-west-2%2Fiotdevicegateway%2Faws4_request&X-Amz-Date=20200203T190240Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=<signature>&X-Amz-Security-Token=<token>
当前,我正在尝试按以下方式在aws-crt-cpp库中使用MQTTClient:
char * url = "wss://iotendpoint-ats.iot.us-west-2.amazonaws.com/mqtt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AAAAAAAAAAAA%2F20200203%2Fus-west-2%2Fiotdevicegateway%2Faws4_request&X-Amz-Date=20200203T190240Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=<signature>&X-Amz-Security-Token=<token>"
Aws::Crt::Mqtt::MqttClient *mqttClient = new Aws::Crt::Mqtt::MqttClient(bootstrap);
std::shared_ptr<Aws::Crt::Mqtt::MqttConnection> mqttConnection = mqttClient->NewConnection(url, 443, Aws::Crt::Io::SocketOptions(), true);
但是我收到以下错误:
aws-c-io: AWS_IO_DNS_INVALID_NAME, Host name was invalid for dns resolution.
我可以使用curl打开一个websocket连接,所以我知道URL是有效的。似乎该库无法处理websocket端点中的参数。有人在C ++中使用预签名的URL创建MQTT订阅吗?