urllib.error.HTTPError:HTTP错误400:对Python3 Slack hook的错误请求

问题描述 投票:0回答:1

在命令行repl上使用Python3:

我的请求格式有什么问题?

我正在

urllib.error.HTTPError: HTTP Error 400: Bad Request

当我这样做

>>>> from urllib import request
>>>> import urllib.parse

>>> data = urllib.parse.urlencode({"channel": "#aws_lambda_python_int", "username": "webhookbot", "text": "This is posted to #aws_lambda_python_int and comes from a bot named webhookbot.", "icon_emoji": ":ghost:"})                                                                                   
>>> data_encoded = data.encode('ascii')
>>> with urllib.request.urlopen("https://hooks.slack.com/services/THGF2356K/BQC7FJZ52/d1Ary9idSP5AAAAAAAAAAAA", data_encoded) as f:                
...     print(f.read().decode('utf-8'))
...

我知道

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.7/urllib/request.py", line 222, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib/python3.7/urllib/request.py", line 531, in open
    response = meth(req, response)
  File "/usr/lib/python3.7/urllib/request.py", line 641, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python3.7/urllib/request.py", line 569, in error
    return self._call_chain(*args)
  File "/usr/lib/python3.7/urllib/request.py", line 503, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.7/urllib/request.py", line 649, in http_error_default                                                                      
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 400: Bad Request
>>>
python-3.x urllib slack urlopen
1个回答
0
投票

尝试用urllib.parse.urlencode更改json.dumps

>>> from urllib import request
>>> import json

>>> data = json.dumps({"channel": "#aws_lambda_python_int", "username": "webhookbot", "text": "This is posted to #aws_lambda_python_int and comes from a bot named webhookbot.", "icon_emoji": ":ghost:"})                                                                                   
>>> data_encoded = data.encode('ascii')
>>> with urllib.request.urlopen("https://hooks.slack.com/services/THGF2356K/BQC7FJZ52/d1Ary9idSP5AAAAAAAAAAAA", data_encoded) as f:                
...     print(f.read().decode('utf-8'))

© www.soinside.com 2019 - 2024. All rights reserved.