private HttpRequestBase createApacheRequest(SdkHttpFullRequest request, String uri, String encodedParams) { switch (request.getHttpMethod()) { case HEAD: return new HttpHead(uri); case GET: return new HttpGet(uri); case DELETE: return new HttpDelete(uri); case OPTIONS: return new HttpOptions(uri); case PATCH: return wrapEntity(request, new HttpPatch(uri), encodedParams); case POST: return wrapEntity(request, new HttpPost(uri), encodedParams); case PUT: return wrapEntity(request, new HttpPut(uri), encodedParams); default: throw new RuntimeException("Unknown HTTP method name: " + request.getHttpMethod()); } }
private void addRequestConfig(final HttpRequestBase base, final SdkHttpFullRequest request, final ApacheHttpRequestConfig requestConfig) { final int connectTimeout = saturatedCast(requestConfig.connectionTimeout().toMillis()); final RequestConfig.Builder requestConfigBuilder = RequestConfig .custom() .setConnectionRequestTimeout(connectTimeout) .setConnectTimeout(connectTimeout) .setSocketTimeout(saturatedCast(requestConfig.socketTimeout().toMillis())) .setLocalAddress(requestConfig.localAddress()); /* * Enable 100-continue support for PUT operations, since this is * where we're potentially uploading large amounts of data and want * to find out as early as possible if an operation will fail. We * don't want to do this for all operations since it will cause * extra latency in the network interaction. */ if (SdkHttpMethod.PUT == request.getHttpMethod() && requestConfig.expectContinueEnabled()) { requestConfigBuilder.setExpectContinueEnabled(true); } base.setConfig(requestConfigBuilder.build()); }