Can';t通过python发布到Hipchat(Curl works)

Can';t通过python发布到Hipchat(Curl works),python,hipchat,Python,Hipchat,我正试图通过Python和v2 API发布到hipchat聊天室 我可以通过shell脚本中的curl毫无问题地发布: ROOM_ID=123 AUTH_TOKEN=123456789 MESSAGE="Hello World" curl -H "Content-Type: application/json" \ -X POST \ -d "{ \"from\": \"GTM\", \"notify\": \"true\", \"c

我正试图通过Python和v2 API发布到hipchat聊天室

我可以通过shell脚本中的curl毫无问题地发布:

ROOM_ID=123
AUTH_TOKEN=123456789
MESSAGE="Hello World"
curl -H "Content-Type: application/json" \
     -X POST \
     -d "{ \"from\": \"GTM\",
           \"notify\": \"true\",
           \"color\": \"red\",
           \"message_format\": \"text\",
           \"message\": \"$MESSAGE\"
         }" \
     https://hipchat.server.domain.com/v2/room/$ROOM_ID/notification?auth_token=$AUTH_TOKEN
但是,通过Python发送具有相同负载的消息失败。我使用了现成的客户端以及通过各种http模块的简单请求,示例如下: (当然,我自己也这样搜索和测试过)

作为一个基本示例,我尝试了以下示例:

host = 'hipchat.host.domain.com'
room = '123'
message = "Hello World"
headers = {'Content-type: application/json'}
color = "yellow"
format = "text"
notify=False
AUTH_TOKEN="123456789"

url = "https://{0}/v2/room/{1}/notification?auth_token={2}".format(host, room, AUTH_TOKEN)
h = httplib2.Http()
payload = {
    'from':'FROM',
    'message': message,
    'notify': notify,
    'message_format': format,
    'color': color
}
resp, content = h.request(url,"POST",urllib.urlencode(payload),headers=headers)
httplib2(以及基于它的客户端)返回一个
responseNodeTready
错误。请求(以及基于请求的客户端)返回一个由对等方重置连接的
错误

因为Curl发送没有问题,所以Hipchat本身可能没有问题。我假设我的Python安装可能有问题(这是MacOs Sierra上的默认2.7)。所以问题是,我如何找到错误的根本原因


非常感谢您的帮助。

您也可以发布您正在使用的python代码吗?@chaos,我使用了相当广泛的代码(例如链接中的代码),因此它不是一个失败的特定实现。到目前为止,唯一有效的方法是pyCurl,我更喜欢只使用python的解决方案?你收到任何警告吗?问题可能在于SSL实现。我只是在Ubuntu 14.05 LTS下踩到了这个。如果您使用
requests
,来
pip安装requests[security]
(及其所需的操作系统软件包)。您也可以发布您正在使用的python代码吗?@chaos,我使用了相当广泛的代码(例如链接中的代码),因此它不是一个失败的特定实现。到目前为止,唯一有效的方法是pyCurl,我更喜欢只使用python的解决方案?你收到任何警告吗?问题可能在于SSL实现。我只是在Ubuntu 14.05 LTS下踩到了这个。如果您使用
requests
,则要
pip安装requests[security]
(及其所需的操作系统软件包)。