You need to enable JavaScript to run this app. 通过Python urllib3向Azure IoT Hub发HTTPS消息无响应问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

通过Python urllib3向Azure IoT Hub发HTTPS消息无响应问题咨询

问题1解答

  • Azure IoT Hub 设备事件发送成功后返回的标准成功响应为204 No Content,该响应不存在任何响应体内容,不属于字符串类型,仅携带HTTP状态码和必要响应头,没有payload数据。
  • 你发送的消息体本身不会随响应返回,仅可通过你提到的Device Explorer工具、Azure IoT SDK读取、Azure Portal三个渠道查询。

问题2解答

urllib3和urllib2并非没有获取到响应,是你代码中的两处问题导致看起来没有响应输出:

  1. 类型拼接错误:Python 3中httpResponse.read()返回的是bytes类型,直接和字符串拼接会触发TypeError异常,如果你没有做异常捕获,代码会直接中断执行,产生没有收到响应的错觉。
  2. 204响应特性:204 No Content本身设计就是无返回内容,就算你处理了类型问题,调用read()拿到的也是空字节,打印后也看不到内容,容易误认为没有返回。
  3. 额外小问题:你原有代码里用datetime = datetime.datetime.now()覆盖了datetime模块名,后续如果再调用datetime模块的方法会触发异常,也建议修正。

你可以通过打印响应状态码的方式直接验证是否拿到成功响应,修正后的完整代码参考如下:

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
current_datetime =  datetime.datetime.now()
body = {}
body['datetime'] = str(current_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("响应状态码:", httpResponse.status)
resp_content = httpResponse.read().decode('utf-8')
print("响应内容:", resp_content if resp_content else "无响应内容(204 No Content 属正常现象)")

内容的提问来源于stack exchange,提问作者GHariz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 00:45:03