网络请求中的错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络请求中的错误相关的知识,希望对你有一定的参考价值。

Connection reset

导致“Connection reset”的原因是服务器端因为某种原因关闭了Connection,而客户端依然在读写数据,此时服务器会返回复位标志“RST”,“RST”标志表示我不再发送数据也不接收数据了,然后此时客户端就会提示“java.net.SocketException: Connection reset” 或者ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接.

Connection reset by peer

另一个比较常见的异常是“Connection reset by peer”,它和“Connection reset”的区别在于:
1.服务器返回了“RST”时,如果此时客户端正在从Socket套接字的输出流中读数据则会提示Connection reset”;
2.服务器返回了“RST”时,如果此时客户端正在往Socket套接字的输入流中写数据则会提示“Connection reset by peer”。

urllib3.exceptions.MaxRetryError

python中,大部分网络请求库是基于urllib3实现的,urllib3默认实现了Retry类,因为这个重试有局限性,只会重试特定的几个异常类型(dns解析错误,连接错误,连接超时错误),可以使用retries=False 关闭重试,然后自己实现重试功能,例如python语言可以使用 geeker包的 retry.

  @retry(retry_times=3)
  def request_token(self):
    pass

SSLEOFError

ssl无法被正确验证时发生,暂无完美解决方案,python语言可以尝试以下方案

1.安装,更新相关库
pip install pyopenssl ndg-httpsclient pyasn1
pip install -U urllib3
pip install -U channels
pip install -U requests[security]
pip --cert /Users/user/cacert.pem install -U channels

2.代码层面

import ssl
import urllib3
ssl._create_default_https_context = ssl._create_unverified_context
pool_manager = urllib3.PoolManager(
                cert_reqs=ssl.CERT_NONE,
                **addition_pool_args)

3.关闭所有的代理或者连接时带上代理参数

以上是关于网络请求中的错误的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段14——Vue的axios网络请求封装

学习小片段——springboot 错误处理

在下面的代码片段中的剩余 ='passthrough' 处的代码中出现语法错误

片段事务中的实例化错误

viewpager 中的片段,未找到视图错误

片段中的 Xamarin Android Google 地图错误