2017-10-09 25 views
1

私はIBM Watson IoTプラットフォームとデバイス・タイプ "testdevice"を作成しました。IBM Watson IoTとPythonリクエスト

私はPythonスクリプトとHTTP APIを介してデータをプッシュする簡単なテストをしたいと思います。

これまでのところ私は、データをプッシュすることができるように管理しますが、取得しました:

(403, 'Not allowed') 

私は自分のコンピュータにデータをプッシュしようとしたことをIBMワトソンのIoTログに表示が、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の許可されていない応答を得ている可能性のある1つの理由です。

FYI、あなたはまた、HTTP接続のみだけでなく、より多くの機能が豊富なMQTTクライアントをサポートしていPython client library、に興味があるかもしれない:あなたのコードはのための作業を行い

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

ibmiotf

ピップをインストールDavidParkerはhttpが許可されていないと言っています。あなたのトークンが台無しになっている可能性もあります。私はいつも認証ヘッダーをエンコードしています - x="use-token-auth:password".encode('base64') `

あなたが持っているトークンは間違っています。

関連する問題