@Override public OutgoingRequest createOutgoingRequest( DriverRequest originalRequest, String uri, boolean proxy) { // Extract the host in the URI. This is the host we have to send the // request to physically. HttpHost physicalHost = UriUtils.extractHost(uri); if (!originalRequest.isExternal()) { if (preserveHost) { // Preserve host if required HttpHost virtualHost = HttpRequestHelper.getHost(originalRequest.getOriginalRequest()); // Rewrite the uri with the virtualHost uri = UriUtils.rewriteURI(uri, virtualHost); } else { uri = UriUtils.rewriteURI(uri, firstBaseUrlHost); } } RequestConfig.Builder builder = RequestConfig.custom(); builder.setConnectTimeout(connectTimeout); builder.setSocketTimeout(socketTimeout); // Use browser compatibility cookie policy. This policy is the closest // to the behavior of a real browser. builder.setCookieSpec(CustomBrowserCompatSpecFactory.CUSTOM_BROWSER_COMPATIBILITY); builder.setRedirectsEnabled(false); RequestConfig config = builder.build(); OutgoingRequestContext context = new OutgoingRequestContext(); String method = "GET"; if (proxy) { method = originalRequest.getOriginalRequest().getRequestLine().getMethod().toUpperCase(); } OutgoingRequest outgoingRequest = new OutgoingRequest( method, uri, originalRequest.getOriginalRequest().getProtocolVersion(), originalRequest, config, context); if (ENTITY_METHODS.contains(method)) { outgoingRequest.setEntity(originalRequest.getOriginalRequest().getEntity()); } else if (!SIMPLE_METHODS.contains(method)) { throw new UnsupportedHttpMethodException(method + " " + uri); } context.setPhysicalHost(physicalHost); context.setOutgoingRequest(outgoingRequest); context.setProxy(proxy); return outgoingRequest; }
@Override public HttpClientRequestExecutor build() { if (eventManager == null) { throw new ConfigurationException("eventManager is mandatory"); } if (driver == null) { throw new ConfigurationException("driver is mandatory"); } if (properties == null) { throw new ConfigurationException("properties is mandatory"); } HttpClientRequestExecutor result = new HttpClientRequestExecutor(); result.eventManager = eventManager; result.preserveHost = Parameters.PRESERVE_HOST.getValue(properties); if (cookieManager == null) { cookieManager = ExtensionFactory.getExtension(properties, Parameters.COOKIE_MANAGER, driver); } result.cookieManager = cookieManager; result.connectTimeout = Parameters.CONNECT_TIMEOUT.getValue(properties); result.socketTimeout = Parameters.SOCKET_TIMEOUT.getValue(properties); result.httpClient = buildHttpClient(); String firstBaseURL = Parameters.REMOTE_URL_BASE.getValue(properties)[0]; result.firstBaseUrlHost = UriUtils.extractHost(firstBaseURL); return result; }