use of com.github.davidmoten.odata.client.RequestHeader in project odata-client by davidmoten.
the class ApacheHttpClientHttpService method getResponse.
private HttpResponse getResponse(List<RequestHeader> requestHeaders, HttpRequestBase request, InputStream content, int length, HttpRequestOptions options) {
Preconditions.checkNotNull(options);
log.debug("{} from url {}", request.getMethod(), request.getURI());
log.debug("requestHeaders={}", requestHeaders);
for (RequestHeader header : requestHeadersModifier.apply(toUrl(request), requestHeaders)) {
request.addHeader(header.name(), header.value());
}
try {
if (content != null && request instanceof HttpEntityEnclosingRequest) {
((HttpEntityEnclosingRequest) request).setEntity(new InputStreamEntity(content, length));
log.debug("content={}", content);
}
RequestConfig config = com.github.davidmoten.odata.client.Util.nvl(request.getConfig(), RequestConfig.DEFAULT);
Builder builder = //
RequestConfig.copy(config);
options.requestConnectTimeoutMs().ifPresent(x -> builder.setConnectTimeout(x.intValue()));
options.requestReadTimeoutMs().ifPresent(x -> builder.setSocketTimeout(x.intValue()));
config = builder.build();
request.setConfig(config);
log.debug("executing request");
try (CloseableHttpResponse response = client.execute(request)) {
int statusCode = response.getStatusLine().getStatusCode();
log.debug("executed request, code={}", statusCode);
HttpEntity entity = response.getEntity();
final byte[] bytes;
if (entity == null) {
bytes = null;
} else {
bytes = Util.read(entity.getContent());
}
if (log.isDebugEnabled()) {
log.debug("response text=\n{}", bytes == null ? "null" : new String(bytes, StandardCharsets.UTF_8));
}
return new HttpResponse(statusCode, bytes);
}
} catch (IOException e) {
throw new ClientException(e);
}
}
Aggregations