0
我使用列入Digi的ConnectPort X4這裏的嵌入式Python(2.4.3)的代碼發佈到Azure的物聯網中心使用HTTPS:的urllib2不處理HTTP NO_CONTENT(204)作爲SUCESSFUL HTTPS性反應
import urllib, sys, datetime, time
import urllib2
iot_device_id = 'HTTP_Device'
iot_endpoint = 'https://winiothub.azure-devices.net/devices/' + iot_device_id + '/messages/events?api-version=2016-02-03'
sas_header = {'Authorization': 'SharedAccessSignature sr=winiothub.azure-devices.net%2Fdevices%2FHTTP_Device&sig=o7dndsA%2FJOnkzYRUhqAwMrQXVhOTpIJqJqILyGDdQAc%3D&se=1522414643'}
while True:
#try:
body_data = { 'gateway_serial': '123', 'readingvalue':'66.00', 'date': str(datetime.datetime.now())}
iot_request = urllib2.Request(iot_endpoint, str(body_data), sas_header)
resp = urllib2.urlopen(iot_request)
contents = resp.read()
resp.close()
time.sleep(1)
#except:
# print 'error'
# time.sleep(1)
代碼實際發佈消息到集線器,但拋出以下錯誤:
Traceback (most recent call last):
File "C:\Users\JeffreyBiesecker\documents\visual studio 2017\Projects\NewGateAzure\NewGateAzure\NewGateAzure2.py", line 14, in ?
urllib2.urlopen(iot_request)
File "C:\Python24\lib\urllib2.py", line 130, in urlopen
return _opener.open(url, data)
File "C:\Python24\lib\urllib2.py", line 364, in open
response = meth(req, response)
File "C:\Python24\lib\urllib2.py", line 471, in http_response
response = self.parent.error(
File "C:\Python24\lib\urllib2.py", line 402, in error
return self._call_chain(*args)
File "C:\Python24\lib\urllib2.py", line 337, in _call_chain
result = func(*args)
File "C:\Python24\lib\urllib2.py", line 480, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 204: No Content
Press any key to continue . . .
如果在嵌入式的Digi網關或者運行代碼我在Python使用Visual Studio中運行,我得到一個錯誤版本2.4.3。
如果有人能幫助我更好地理解爲什麼我得到這個錯誤,或者有更好的方法。感謝任何幫助!我更喜歡用這種方式來捕捉錯誤。
謝謝,我肯定會添加這段代碼。它的好主意,我想知道爲什麼204是python 2.4中的錯誤,但在2.7中沒有報告爲錯誤。我在Visual Studio中測試了這個。感謝所有幫助! –
我不知道爲什麼這是一個錯誤,它似乎不直觀 - 在調試器中逐步調試urllib2可能會很有用。 –