python - IBM Watson IoT 和 Python 请求

标签 python http ibm-cloud watson-iot

我创建了一个 IBM Watson IoT 平台和一个设备类型“testdevice”。

我想要一个简单的测试,通过 Python 脚本和 HTTP API 推送数据。

到目前为止,我已经设法能够推送数据,但得到:

(403, 'Not allowed')

我可以在 IBM Watson IoT 日志中看到我的计算机已尝试推送数据,但身份验证失败

作为请求 header ,我使用 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

认证失败可能是什么原因?

最佳答案

您是否尝试过通过 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)

关于python - IBM Watson IoT 和 Python 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46642459/

相关文章:

python - 将 python 模块从现有环境移动到 anaconda

c# - 在不同端口之间共享 Cookie

c# - 任何人都有示例代码,用于将一个网站的 "chunked"HTTP 流式下载直接上传到单独的 Web 服务器?

ssl - 在 Bluemix 上安装 pyOpenSSL

python - PyCryptoDome : AES-256 giving different output with same key & data

python - 如何计算每个月或某个月份的事件日期

json - 如何使用 REST 控制台对 http API 调用进行逆向工程

ruby-on-rails - Rails 日志中的 "object allocation during garbage collection phase"是什么意思?

debugging - bluemix node-red 调试不工作

python - 如何从 pandas 正确导入 scatter_matrix() 函数?