@Override public int getReadTimeout() { return client.readTimeoutMillis(); }
/** * 设置超时 * * @param request * @return */ private OkHttpClient timeout(ApiRequest request) { int timeoutMillis = request.getTimeout() * 1000; if (client.readTimeoutMillis() == 0 || client.readTimeoutMillis() > timeoutMillis) { return client; } if (null != clientWithTimeout && clientWithTimeout.readTimeoutMillis() > timeoutMillis) { return clientWithTimeout; } clientWithTimeout = client.newBuilder().readTimeout(timeoutMillis + 1000, TimeUnit.MILLISECONDS).build(); return clientWithTimeout; }
Response getResponseWithInterceptorChain() throws IOException { // Build a full stack of interceptors. List<Interceptor> interceptors = new ArrayList<>(); interceptors.addAll(client.interceptors()); interceptors.add(retryAndFollowUpInterceptor); interceptors.add(new BridgeInterceptor(client.cookieJar())); interceptors.add(new CacheInterceptor(client.internalCache())); interceptors.add(new ConnectInterceptor(client)); if (!forWebSocket) { interceptors.addAll(client.networkInterceptors()); } interceptors.add(new CallServerInterceptor(forWebSocket)); Interceptor.Chain chain = new RealInterceptorChain(interceptors, null, null, null, 0, originalRequest, this, eventListener, client.connectTimeoutMillis(), client.readTimeoutMillis(), client.writeTimeoutMillis()); return chain.proceed(originalRequest); } }
Response getResponseWithInterceptorChain() throws IOException { // Build a full stack of interceptors. List<Interceptor> interceptors = new ArrayList<>(); interceptors.addAll(client.interceptors()); interceptors.add(retryAndFollowUpInterceptor); interceptors.add(new BridgeInterceptor(client.cookieJar())); interceptors.add(new CacheInterceptor(client.internalCache())); interceptors.add(new ConnectInterceptor(client)); if (!forWebSocket) { interceptors.addAll(client.networkInterceptors()); } interceptors.add(new CallServerInterceptor(forWebSocket)); Interceptor.Chain chain = new RealInterceptorChain(interceptors, null, null, null, 0, originalRequest, this, eventListener, client.connectTimeoutMillis(), client.readTimeoutMillis(), client.writeTimeoutMillis()); return chain.proceed(originalRequest); } }
@Test public void override_timeouts() { underTest = HttpConnector.newBuilder() .url(serverUrl) .readTimeoutMilliseconds(42) .connectTimeoutMilliseconds(74) .build(); assertThat(underTest.okHttpClient().readTimeoutMillis()).isEqualTo(42); assertThat(underTest.okHttpClient().connectTimeoutMillis()).isEqualTo(74); }
@Test public void test_default_settings() throws Exception { answerHelloWorld(); underTest = HttpConnector.newBuilder().url(serverUrl).build(); assertThat(underTest.baseUrl()).isEqualTo(serverUrl); GetRequest request = new GetRequest("api/issues/search").setMediaType(MediaTypes.PROTOBUF); WsResponse response = underTest.call(request); // verify default timeouts on client assertThat(underTest.okHttpClient().connectTimeoutMillis()).isEqualTo(HttpConnector.DEFAULT_CONNECT_TIMEOUT_MILLISECONDS); assertThat(underTest.okHttpClient().readTimeoutMillis()).isEqualTo(HttpConnector.DEFAULT_READ_TIMEOUT_MILLISECONDS); // verify response assertThat(response.hasContent()).isTrue(); assertThat(response.content()).isEqualTo("hello, world!"); // verify the request received by server RecordedRequest recordedRequest = server.takeRequest(); assertThat(recordedRequest.getMethod()).isEqualTo("GET"); assertThat(recordedRequest.getPath()).isEqualTo("/api/issues/search"); assertThat(recordedRequest.getHeader("Accept")).isEqualTo(MediaTypes.PROTOBUF); assertThat(recordedRequest.getHeader("Accept-Charset")).isEqualTo("UTF-8"); assertThat(recordedRequest.getHeader("User-Agent")).startsWith("okhttp/"); // compression is handled by OkHttp assertThat(recordedRequest.getHeader("Accept-Encoding")).isEqualTo("gzip"); }
@Override public int readTimeoutMillis() { return delegate.readTimeoutMillis(); }
@Override public int readTimeoutMillis() { return delegate.readTimeoutMillis(); }
@Override public int readTimeoutMillis() { return delegate.readTimeoutMillis(); }
@Override public int getReadTimeout() { return client.readTimeoutMillis(); }
@Override public int getReadTimeout() { return client.readTimeoutMillis(); }
@Override public int getReadTimeout() { return client.readTimeoutMillis(); }
private OkHttpClient getOkHttpClient(BaseRequest request) { int timeoutMillis = request.getTimeoutSeconds() * 1000; if (client.readTimeoutMillis() == 0 || client.readTimeoutMillis() > timeoutMillis) return client; if (clientWithTimeout.readTimeoutMillis() > timeoutMillis) return clientWithTimeout; clientWithTimeout = client.newBuilder().readTimeout(timeoutMillis + 1000, TimeUnit.MILLISECONDS).build(); return clientWithTimeout; }
private HttpStream connect() throws RouteException, RequestException, IOException { boolean doExtensiveHealthChecks = !networkRequest.method().equals("GET"); return streamAllocation.newStream(client.connectTimeoutMillis(), client.readTimeoutMillis(), client.writeTimeoutMillis(), client.retryOnConnectionFailure(), doExtensiveHealthChecks); }
@Override public feign.Response execute(feign.Request input, feign.Request.Options options) throws IOException { okhttp3.OkHttpClient requestScoped; if (delegate.connectTimeoutMillis() != options.connectTimeoutMillis() || delegate.readTimeoutMillis() != options.readTimeoutMillis()) { requestScoped = delegate.newBuilder() .connectTimeout(options.connectTimeoutMillis(), TimeUnit.MILLISECONDS) .readTimeout(options.readTimeoutMillis(), TimeUnit.MILLISECONDS) .followRedirects(options.isFollowRedirects()) .build(); } else { requestScoped = delegate; } Request request = toOkHttpRequest(input); Response response = requestScoped.newCall(request).execute(); return toFeignResponse(response, input).toBuilder().request(input).build(); } }
@Override public void writeRequestHeaders(Request request) throws IOException { if (stream != null) return; httpEngine.writingRequestHeaders(); boolean permitsRequestBody = httpEngine.permitsRequestBody(request); List<Header> requestHeaders = framedConnection.getProtocol() == Protocol.HTTP_2 ? http2HeadersList(request) : spdy3HeadersList(request); boolean hasResponseBody = true; stream = framedConnection.newStream(requestHeaders, permitsRequestBody, hasResponseBody); stream.readTimeout().timeout(httpEngine.client.readTimeoutMillis(), TimeUnit.MILLISECONDS); stream.writeTimeout().timeout(httpEngine.client.writeTimeoutMillis(), TimeUnit.MILLISECONDS); }
@Test public void defaultClientWithProxy() { Proxy proxy = mock(java.net.Proxy.class); builder.proxy(proxy); builder.build(); OkHttpClient client = builder.getClientBuilder().build(); assertEquals(EventSource.DEFAULT_CONNECT_TIMEOUT_MS, client.connectTimeoutMillis()); assertEquals(EventSource.DEFAULT_READ_TIMEOUT_MS, client.readTimeoutMillis()); assertEquals(EventSource.DEFAULT_WRITE_TIMEOUT_MS, client.writeTimeoutMillis()); assertEquals(proxy, client.proxy()); }
@Test public void defaultClient() { builder.build(); OkHttpClient client = builder.getClientBuilder().build(); assertEquals(EventSource.DEFAULT_CONNECT_TIMEOUT_MS, client.connectTimeoutMillis()); assertEquals(EventSource.DEFAULT_READ_TIMEOUT_MS, client.readTimeoutMillis()); assertEquals(EventSource.DEFAULT_WRITE_TIMEOUT_MS, client.writeTimeoutMillis()); assertNull(client.proxy()); }
@Test public void defaultClientWithProxyHostAndPort() { String proxyHost = "http://proxy.example.com"; int proxyPort = 8080; builder.proxy(proxyHost, proxyPort); builder.build(); OkHttpClient client = builder.getClientBuilder().build(); assertEquals(EventSource.DEFAULT_CONNECT_TIMEOUT_MS, client.connectTimeoutMillis()); assertEquals(EventSource.DEFAULT_READ_TIMEOUT_MS, client.readTimeoutMillis()); assertEquals(EventSource.DEFAULT_WRITE_TIMEOUT_MS, client.writeTimeoutMillis()); Assert.assertNotNull(client.proxy()); assertEquals(proxyHost + ":" + proxyPort, client.proxy().address().toString()); }
@Test public void defaultClientWithCustomTimeouts() { int connectTimeout = 100; int readTimeout = 1000; int writeTimeout = 10000; builder.connectTimeoutMs(connectTimeout); builder.readTimeoutMs(readTimeout); builder.writeTimeoutMs(writeTimeout); builder.build(); OkHttpClient client = builder.getClientBuilder().build(); assertEquals(connectTimeout, client.connectTimeoutMillis()); assertEquals(readTimeout, client.readTimeoutMillis()); assertEquals(writeTimeout, client.writeTimeoutMillis()); }