HttpGet headers 会覆盖 httpClient headers (Apache HttpClient) 吗?

Will HttpGet headers override httpClient headers (Apache HttpClient)?

我想在 HttpClient 上设置 header,因为我希望我的大部分服务调用具有默认的 headers。

RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(ApacheHttpClient.DEFAULT_CONNECTION_TIMEOUT)
            .setSocketTimeout(ApacheHttpClient.DEFAULT_SOCKET_TIMEOUT).build();

    httpClient = HttpClients.custom().setDefaultHeaders(getDefaultHeaderList()).setDefaultRequestConfig(requestConfig).setRetryHandler(new RetryHandler()).build();

但是,如果需要,我想替换默认的 headers。我会将其设置为 HttpGet header.

int cTimeout = (connTimeout == null) ? DEFAULT_CONNECTION_TIMEOUT : connTimeout;
    int sTimeout = (socketTimeout == null) ? DEFAULT_SOCKET_TIMEOUT : socketTimeout;
    httpGet.setConfig(RequestConfig.custom().setConnectTimeout(cTimeout).setSocketTimeout(sTimeout).build());

HttpGet header 会覆盖在 HttpClient 中设置的 header 吗?

调试请求,在 org.apache.http.impl.client.InternalHttpClient.doExecute(HttpHost, HttpRequest, HttpContext) 我可以看到保存超时的配置首先从请求中获取,如果未设置,则使用默认值:

  RequestConfig config = null;
        if (request instanceof Configurable) {
            config = ((Configurable) request).getConfig();
        }
        if (config == null) {
            final HttpParams params = request.getParams();
            if (params instanceof HttpParamsNames) {
                if (!((HttpParamsNames) params).getNames().isEmpty()) {
                    config = HttpClientParamConfig.getRequestConfig(params);
                }
            } else {
                config = HttpClientParamConfig.getRequestConfig(params);
            }
        }
        if (config != null) {
            localcontext.setRequestConfig(config);
        }
        setupContext(localcontext);