这通常意味着服务器由于某种原因无法或不愿意处理该请求。 2. 可能导致 okhttp3 refused_stream 错误的常见原因 服务器配置问题:服务器可能未正确配置以支持 HTTP/2,或者对特定的请求路径或方法有限制。 资源限制:服务器可能由于资源限制(如内存、CPU 或带宽)而拒绝处理额外的请求流。 协议不兼容:客户端和服务器之...
从上面的代码可以看到,首先调用StreamAllocation的newStream方法就可以得到HttpStream对象,同时也就得到了Connection对象。下面首选从StreamAllocation的newStream()方法看起: publicHttpStreamnewStream(OkHttpClient client,booleandoExtensiveHealthChecks){//得到连接时长、读超时以及写超时参数intconnectTimeout=client.connectTi...
//需要一个新的连接,所以重置一些状态 refusedStreamCount = 0 connectionShutdownCount = 0 otherFailureCount = 0 //第二次,尝试从连接池中获取一个连接,不带路由,不带多路复用 if (connectionPool.callAcquirePooledConnection(address, call, null, false)) { val result = call.connection!! eventListener....
这个时候需要为call设置一个新的连接 // 2.1 先将部分变量初始化 refusedStreamCount = 0 connectionShutdownCount = 0 otherFailureCount = 0 // 2.2 尝试从连接池中找寻一个合适的连接,这个时候address还未进行dns解析,所以第三个参数routes传入null(也就是第三个参数其实是address通过解析得到的routes) if (...
refusedStreamCount =0; } } RealConnection newConnection =newRealConnection(selectedRoute);synchronized(connectionPool) { acquire(newConnection); Internal.instance.put(connectionPool, newConnection);this.connection = newConnection;if(canceled)thrownewIOException("Canceled"); ...
route = selectedRoute; refusedStreamCount = 0; result = new RealConnection(connectionPool, selectedRoute); acquire(result); } // Do TCP + TLS handshakes. This is a blocking operation. result.connect(connectTimeout, readTimeout, writeTimeout, connectionRetryEnabled); routeDatabase().connected(...
refusedStreamCount = 0; //以上条件都不满足则new一个 result = new RealConnection(connectionPool, selectedRoute); acquire(result); } // 开始握手 result.connect(connectTimeout, readTimeout, writeTimeout, connectionRetryEnabled); //计入数据库 ...
refusedStreamCount =0; } } RealConnection newConnection =newRealConnection(selectedRoute);synchronized(connectionPool) { acquire(newConnection); Internal.instance.put(connectionPool, newConnection);this.connection = newConnection;if(canceled)thrownewIOException("Canceled"); ...
上面注释 1 处创建了一个StreamAllocation对象,注释 2 处 调用了其release方法,注释 3 处则把这个对象传给了下一个 Interceptor。StreamAlloction这个类很重要,下面就看一下它的用途。 StreamAlloction StreamAllocation从名字上看是流分配器,其实它是统筹管理了几样东西,注释写的非常清楚: ...
refusedStreamCount =0; } } RealConnection newConnection =newRealConnection(selectedRoute); acquire(newConnection); synchronized (connectionPool) { Internal.instance.put(connectionPool, newConnection);this.connection = newConnection;if(canceled)thrownewIOException("Canceled"); ...