private RestRequest buildRestRequest(URI uri, ResourceMethod method, DataMap dataMap, Map<String, String> headers, List<String> cookies, ProtocolVersion protocolVersion, ContentType contentType, List<ContentType> acceptTypes, boolean acceptResponseAttachments) throws Exception { RestRequestBuilder requestBuilder = new RestRequestBuilder(uri).setMethod(method.getHttpMethod().toString()); requestBuilder.setHeaders(headers); requestBuilder.setCookies(cookies); addAcceptHeaders(requestBuilder, acceptTypes, acceptResponseAttachments); final ContentType type = resolveContentType(requestBuilder, dataMap, contentType); if (type != null) { requestBuilder.setHeader(RestConstants.HEADER_CONTENT_TYPE, type.getHeaderKey()); // Use unsafe wrap to avoid copying the bytes when request builder creates ByteString. requestBuilder.setEntity(ByteString.unsafeWrap(type.getCodec().mapToBytes(dataMap))); } addProtocolVersionHeader(requestBuilder, protocolVersion); if (method.getHttpMethod() == HttpMethod.POST) { requestBuilder.setHeader(RestConstants.HEADER_RESTLI_REQUEST_METHOD, method.toString()); } return requestBuilder.build(); }
addProtocolVersionHeader(requestBuilder, protocolVersion);