Python2.7请求异常处理

时间:2019-05-21 23:22:53

标签: python-2.7 python-requests

我正在尝试将对象发布到http端点,这是我的代码:

try:
    response = requests.post(url, data=obj['message'], headers=headers)
    logger.warn("Not bad resp: %s" % (response))
except requests.exceptions.HTTPError as e:
    logger.warn(str(e))

非常令人震惊的是,我实际上得到了200响应,但是出于某种原因,触发了异常条件。我以前在异常部分中输出响应代码时就知道这一点,但是由于它是200,并且我想要更多的上下文,因此我尝试使用更高级的错误处理,除以下内容外,我尝试了一些其他方法: >

except requests.RequestException as e:

这些记录器行:

logger.warn(e)
print(e)

似乎什么都没有。.我总是会因以下错误而失败:

Traceback (most recent call last):
  File "/opt/python/bin/lam_replay.py", line 190, in <module>
    main()
  File "/opt/python/bin/lam_replay.py", line 187, in main
    replayer(filename, moogsoft['hostname'])
  File "/opt/python/bin/lam_replay.py", line 92, in replayer
    response = requests.post(url, data=obj['message'], headers=headers)
  File "/usr/lib/python2.7/site-packages/requests/api.py", line 108, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "/usr/lib/python2.7/site-packages/requests/api.py", line 50, in request
    response = session.request(method=method, url=url, **kwargs)
  File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 464, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 576, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python2.7/site-packages/requests/adapters.py", line 370, in send
    timeout=timeout
  File "/usr/lib/python2.7/site-packages/urllib3/connectionpool.py", line 544, in urlopen
    body=body, headers=headers)
  File "/usr/lib/python2.7/site-packages/urllib3/connectionpool.py", line 349, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/lib64/python2.7/httplib.py", line 1041, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib64/python2.7/httplib.py", line 1075, in _send_request
    self.endheaders(body)
  File "/usr/lib64/python2.7/httplib.py", line 1037, in endheaders
    self._send_output(message_body)
  File "/usr/lib64/python2.7/httplib.py", line 885, in _send_output
    self.send(message_body)
  File "/usr/lib64/python2.7/httplib.py", line 857, in send
    self.sock.sendall(data)
  File "/usr/lib64/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2013' in position 24781: ordinal not in range(128)

有没有一种方法可以解决异常编码?我想念什么??

1 个答案:

答案 0 :(得分:0)

当我从文件中逐行读取时,我使用unicode函数并将其设置为“忽略错误”

    obj = unicode(f.readline(), errors='ignore')
    obj = json.loads(obj)

然后,我将该行加载为json。而不是直接将线作为json加载。