2017-10-09 17 views
1

IBM Watson IoT 플랫폼 및 디바이스 유형 "testdevice"를 작성했습니다.IBM Watson IoT 및 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 응답을 허용하지 않는 이유 중 하나입니다.

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

핍 설치 :

참고로, 당신은 또한 HTTP 전용 연결뿐만 아니라 더 많은 기능이 풍부한 MQTT 클라이언트를 지원하는 Python client library에 관심이있을 수도 있습니다 데이비드 펄커 (DavidParker)가 http가 허용되지 않는다고 말하면 될 수 있습니다. 토큰이 엉망이 될 수도 있습니다. 나는 항상 인증 헤더를 인코딩한다. - x="use-token-auth:password".encode('base64')

또는 당신이 갖고있는 토큰이 잘못되었다.