2017-10-09 35 views
1

我創建了IBM Watson IoT平臺和設備類型「testdevice」。IBM Watson物聯網和Python請求

我想通過Python腳本和HTTP API推送數據的簡單測試。

到目前爲止,我已經成功地能推動數據,但得到:

(403, 'Not allowed') 

我可以在IBM沃森物聯網查看日誌,我的電腦一直試圖將數據推,但是Authentication failed

由於我使用auth=('use-token-auth', 'MY-TOKEN') 請求頭所以整個代碼:

import requests 

response = requests.post('http://MY-ORG-ID.messaging.internetofthings.ibmcloud.com:1883/api/v0002/device/types/testdevice/devices/MY-DEVICE/events/test', data={'number': 1}, auth=('use-token-auth', 'MY-TOKEN'), headers={'Content-type': 'application/json'}) 

print(response.text) #TEXT/HTML 
print(response.status_code, response.reason) #HTTP 

可能是什麼身份驗證失敗的原因是什麼?

回答

1

您是否嘗試過通過HTTPS進行連接?自年中以來,默認情況下,組織被配置爲拒絕不安全的連接,除非用戶專門啓用此功能(如果要在組織中啓用未加密的連接,則可以在儀表板的設置面板中找到此選項)是一個可能的原因,你得到403不允許的答覆。

僅供參考,您可能也有興趣在Python client library,它支持HTTP唯一的連接以及功能更豐富MQTT客戶:

PIP安裝ibmiotf

import ibmiotf.device 

options = {"org": orgId, "type": "testdevice", "id": "MY-DEVICE", "auth-method": "token" , "auth-token": "MY-TOKEN"} 
client = ibmiotf.device.HttpClient(options) 

data={'number': 1} 
client.publishEvent("test", "json", data) 
0

你的代碼不工作我可以像DavidParker所說的那樣,http是不被允許的。它也可能是你的令牌越來越混亂。我總是編碼驗證標頭 - x="use-token-auth:password".encode('base64') `

或者,您擁有的令牌是錯誤的。