【问题标题】:urllib.error.HTTPError: HTTP Error 400: Bad Request for Python3 Slack hookurllib.error.HTTPError:HTTP 错误 400:Python3 Slack 挂钩的错误请求
【发布时间】:2020-03-06 18:22:03
【问题描述】:

在命令行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】:

    尝试将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'))
    
    

    【讨论】:

      猜你喜欢
      • 2019-11-05
      • 2020-03-26
      • 2017-08-10
      • 2023-03-08
      • 2014-05-17
      • 1970-01-01
      • 1970-01-01
      • 2019-04-02
      • 2017-08-04
      相关资源
      最近更新 更多