根据官方documentation以及一些在线帖子,当您成功向Azure IoT Hub设备发送消息时,响应为:“204无内容”
我们知道IoTHub已成功发送和接收消息,并且我们可以看到消息(包括消息正文):1)在设备浏览器工具中,2)我们可以通过使用Azure IoT SDK(Azure.eventhub)并创建读取功能来查看消息,3)我们还可以在Azure门户中查看消息
使用Python3.8中的Python请求库发送消息时,确实会得到204响应。然而,对于一个位置,我们需要使用Pythonurllib3库,而我们在发布帖子时根本没有得到任何响应。代码如下。 注意:我们之前尝试过urllib2,但也没有得到响应
Azure IoT Hub通常成功响应的数据类型是什么?它是一个简单的字符串吗
什么会阻止响应显示在urllib3和urllib2中
谢谢。 生长激素
import urllib3
import json
import datetime
import ssl
import certifi
print("certifi: " + certifi.where())
print("urllib3 ver: " + urllib3.__version__)
print("ssl ver: " + ssl.OPENSSL_VERSION)
# IoT DeviceID
deviceID = "gwy1"
# Iot Hub Name
IoTHubName = "aziothub1"
# RestAPI Version
iotHubAPIVer = "2020-03-13"
iotHubRestURI = "https://" + IoTHubName + ".azure-devices.net/devices/" + deviceID + "/messages/events?api-version=" + iotHubAPIVer
SASToken = "SharedAccessSignature sr=gwy1-aziothub1.azure-devices.net%2Fdevices%2Fglualwpr-gwy1&sig=v-----------------------------------&se=1629182336"
# Message Payload
datetime = datetime.datetime.now()
body = {}
body['datetime'] = str(datetime)
body['deviceClient'] = deviceID
body['Message'] = 'Python Device to Cloud Message over HTTPS'
encoded_body = json.dumps(body)
# Headers
Headers = {
'Content-type' : 'application/json',
'Authorization' : SASToken
}
http = urllib3.PoolManager(ssl_version=ssl.PROTOCOL_TLSv1_2)
httpResponse = http.request('POST', iotHubRestURI,
headers=Headers,
body=encoded_body)
print ("response: " + httpResponse.read()) # Do something with the response
使用urllib3 Python库:要获取状态代码(它是一个整数),必须获取字段status的值。函数read()不返回任何内容
这条线路的工作原理是:
相关问题 更多 >
编程相关推荐