python - 如何从 python 发布到 hipchat

标签 python authentication python-requests hipchat

我有一些 python 工具,我想将更新发送到 hipchat 房间。我在其他地方使用 shell 脚本执行此操作,所以我知道它在我们的环境中有效,但我似乎无法将 token 推送到 hipchat API。一定要简单。

首先,这会正确验证并传递消息:

curl -d "room_id=xxx&from=DummyFrom&message=ThisIsATest&color=green" https://api.hipchat.com/v1/rooms/message?auth_token=yyy

但是当我尝试使用 python“请求”模块时,我卡住了。

import requests
room_id_real="xxx"
auth_token_real="yyy"
payload={"room_id":room_id_real,"from":"DummyFrom","message":"ThisIsATest","color":"green"}
headerdata={"auth_token":auth_token_real,"format":"json"}
r=requests.post("https://api.hipchat.com/v1/rooms/message", params=payload, headers=headerdata)
print r.ok, r.status_code, r.text

这是我的错误信息:

False 401 {"error":{"code":401,"type":"Unauthorized","message":"Auth token not found. Please see: https:\/\/www.hipchat.com\/docs\/api\/auth"}}

基本上我似乎没有正确传递身份验证 token 。我怎样才能让它工作?

最佳答案

如果有帮助,这里有一个有效的 V2 API 示例。我确实发现 V2 API 对于完全正确地获取请求的形式更加敏感。但是,符合 V2 API 可能更具前瞻性(尽管最初的问题似乎与 V1 有关)。

#!/usr/bin/env python
import json
from urllib2 import Request, urlopen

V2TOKEN = '--V2 API token goes here--'
ROOMID = --room-id-nr-goes-here--

# API V2, send message to room:
url = 'https://api.hipchat.com/v2/room/%d/notification' % ROOMID
message = "It's a<br><em>trap!</em>"
headers = {
    "content-type": "application/json",
    "authorization": "Bearer %s" % V2TOKEN}
datastr = json.dumps({
    'message': message,
    'color': 'yellow',
    'message_format': 'html',
    'notify': False})
request = Request(url, headers=headers, data=datastr)
uo = urlopen(request)
rawresponse = ''.join(uo)
uo.close()
assert uo.code == 204

关于python - 如何从 python 发布到 hipchat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22020247/

相关文章:

python - 将属性添加到 Django 模型元类中

c# - 同步框架 - 跨域文件同步

python - 检查 python 中的超时错误

python - 为什么一些相同的 POST 请求花费的时间比其他请求长两到三倍?

django - 如何在 Django REST Framework 中的单元测试期间登录用户?

python - 下载期间使用 Requests.response 从文件中读取数据

python - 使用 numpy/scipy 的托普利兹矩阵

python - 在 Redshift 查询中转义引号

javascript - 如何编写脚本来编辑 JSON 文件?

java - Java 中多个 Web 应用程序的单点登录