使用 Azure SDK 中的 MQTT 协议的应用程序无法在公司代理后面工作



我在这件事上是新手,我不知道为什么我的应用程序可以正常工作并在开放网络中运行,而当代理后面时,我有返回错误。我使用 raspberry zero,与 raspbian Stretch,使用 azure-iot-sdk-python和代理 squid

我已经尝试了这个事情:

代理允许HTTPS连接,并且它具有所有端口,并且无限制,地址*****。azure-devices.net放置在

的白名单中
$ nano / etc / squid / whitelist

除此之外,我在操作系统中设置了代理,

$ nano / etc / environment

以下配置:

导出http_proxy =" http://192.168.2.254:3128/"

导出https_proxy =" https://192.168.2.254:3128/"

导出no_proxy =" localhost,127.0.0.1"

以及

$ nano ~ / .bashrc

导出http_proxy = http://192.168.2.254:3128

导出https_proxy = https://192.168.2.254:3128

导出no_proxy = localhost,127.0.0.1

和,

$ nano /etc/apt/apt.conf.d/90proxy

获取:: http ::代理" http://192.168.2.254:3128/";

获取:: https ::代理" https://192.168.2.254:3128/";

from iothub_client import IoTHubClient, IoTHubTransportProvider, IoTHubMessage
import time
CONNECTION_STRING = "HostName=******.azure-devices.net;DeviceId=***;SharedAccessKey=*********"
PROTOCOL = IoTHubTransportProvider.MQTT

def send_confirmation_callback(message, result, user_context):
    print("Confirmation received for message with result = %s" % (result))

if __name__ == '__main__':
    client = IoTHubClient(CONNECTION_STRING, PROTOCOL)
    message = IoTHubMessage("test message")
    client.send_event_async(message, send_confirmation_callback, None)
    print("Message transmitted to IoT Hub")
    while True:
        time.sleep(1)
Error: File: /usr/sdk/src/c/c-utility/adapters/socketio_berkeley.c Func: lookup_address_and_initiate_socket_connection Line: 282 Failure: getaddrinfo failure -3.
Error: File: /usr/sdk/src/c/c-utility/adapters/socketio_berkeley.c Func: socketio_open Line: 765 lookup_address_and_connect_socket failed
Error: File: /usr/sdk/src/c/c-utility/adapters/tlsio_openssl.c Func: on_underlying_io_open_complete Line: 760 Invalid tlsio_state. Expected state is TLSIO_STATE_OPENING_UNDERLYING_IO.
Error: File: /usr/sdk/src/c/c-utility/adapters/tlsio_openssl.c Func: tlsio_openssl_open Line: 1258 Failed opening the underlying I / O.
Error: File: /usr/sdk/src/c/umqtt/src/mqtt_client.c Func: mqtt_client_connect Line: 1000 Error: io_open failed
Error: File: /usr/sdk/src/c/iothub_client/src/iothubtransport_mqtt_common.c Func: SendMqttConnectMsg Line: 2122 failure connecting

您无法使用(本机(MQTT使用HTTP代理,它们是2个完全独立的协议。

如果您可以通过WebSockets使用MQTT,则应可以使用HTTP代理,因为最初通过升级HTTP连接来确定WebSockets。

如果您的网络上有袜子代理,则可以与本机MQTT一起使用。以下问题有关于如何使用Python使用袜子代理的提示。如何使用Urllib2使用袜子4/5代理?

最新更新