/** * Converts retrofit request to async-http-client request. * * @param request retrofit request * @return async-http-client request. */ @SneakyThrows protected org.asynchttpclient.Request createRequest(@NonNull Request request) { // create async-http-client request builder val requestBuilder = new RequestBuilder(request.method()); // request uri requestBuilder.setUrl(request.url().toString()); // set headers val headers = request.headers(); headers.names().forEach(name -> requestBuilder.setHeader(name, headers.values(name))); // set request body val body = request.body(); if (body != null && body.contentLength() > 0) { if (body.contentType() != null) { requestBuilder.setHeader(HttpHeaderNames.CONTENT_TYPE, body.contentType().toString()); } // write body to buffer val okioBuffer = new Buffer(); body.writeTo(okioBuffer); requestBuilder.setBody(okioBuffer.readByteArray()); } // customize the request builder (external customizer can change the request url for example) runConsumers(this.requestCustomizers, requestBuilder); return requestBuilder.build(); }
public Builder addHeader(CharSequence name, Object value) { requestBuilder.addHeader(name, value); return this; }
@Test public void testSettingHeadersUsingMapWithStringKeys() { Map<String, List<String>> headers = new HashMap<>(); headers.put("X-Forwarded-For", singletonList("10.0.0.1")); RequestBuilder requestBuilder = new RequestBuilder(); requestBuilder.setHeaders(headers); requestBuilder.setUrl("http://localhost"); Request request = requestBuilder.build(); assertEquals(request.getHeaders().get("X-Forwarded-For"), "10.0.0.1"); } }
private Builder(SimpleAsyncHttpClient client) { this.requestBuilder = new RequestBuilder(client.requestBuilder.build()); this.defaultThrowableHandler = client.defaultThrowableHandler; this.errorDocumentBehaviour = client.errorDocumentBehaviour; this.enableResumableDownload = client.resumeEnabled; this.ahc = client.getAsyncHttpClient(); this.listener = client.listener; }
public static RequestBuilder request(String method, String url) { return new RequestBuilder(method).setUrl(url); }
final RequestBuilder requestBuilder = new RequestBuilder(switchToGet ? "GET" : originalMethod)// .setCookies(request.getCookies())// .setConnectionPoolPartitioning(request.getConnectionPoolPartitioning())// .setFollowRedirect(true)// .setLocalInetAddress(request.getLocalAddress())// .setNameResolver(request.getNameResolver())// .setProxyServer(request.getProxyServer())// .setRealm(request.getRealm())// .setRequestTimeout(request.getRequestTimeout()); requestBuilder.setBodyCharset(request.getBodyCharset()); if (MiscUtils.isNonEmpty(request.getFormParams())) requestBuilder.setFormParams(request.getFormParams()); else if (request.getStringData() != null) requestBuilder.setBody(request.getStringData()); else if (request.getByteData() != null) requestBuilder.setBody(request.getByteData()); else if (request.getByteBufferData() != null) requestBuilder.setBody(request.getByteBufferData()); else if (request.getBodyGenerator() != null) requestBuilder.setBody(request.getBodyGenerator()); requestBuilder.setHeaders(propagatedHeaders(request, realm, switchToGet)); Cookie c = CookieDecoder.decode(cookieStr); if (c != null) requestBuilder.addOrReplaceCookie(c); requestBuilder.setHeaders(propagatedHeaders(future.getRequest(), realm, switchToGet));
boolean switchToGet = !originalMethod.equals("GET") && (statusCode == 303 || (statusCode == 302 && !config.isStrict302Handling())); final RequestBuilder requestBuilder = new RequestBuilder(switchToGet ? "GET" : originalMethod)// .setCookies(request.getCookies())// .setConnectionPoolPartitioning(request.getConnectionPoolPartitioning())// .setFollowRedirect(true)// .setLocalInetAddress(request.getLocalAddress())// .setNameResolver(request.getNameResolver())// .setProxyServer(request.getProxyServer())// .setRealm(request.getRealm())// .setRequestTimeout(request.getRequestTimeout())// .setVirtualHost(request.getVirtualHost()); requestBuilder.setHeaders(propagatedHeaders(request, realm, switchToGet)); Cookie c = CookieDecoder.decode(cookieStr); if (c != null) requestBuilder.addOrReplaceCookie(c); requestBuilder.setHeaders(propagatedHeaders(future.getRequest(), realm, switchToGet)); final Request nextRequest = requestBuilder.setUrl(newUrl).build();
@Test public void testUserProvidedRequestMethod() { Request req = new RequestBuilder("ABC").setUrl("http://foo.com").build(); assertEquals(req.getMethod(), "ABC"); assertEquals(req.getUrl(), "http://foo.com"); }
final RequestBuilder requestBuilder = new RequestBuilder(switchToGet ? GET : originalMethod) .setChannelPoolPartitioning(request.getChannelPoolPartitioning()) .setFollowRedirect(true) .setLocalAddress(request.getLocalAddress()) .setNameResolver(request.getNameResolver()) .setProxyServer(request.getProxyServer()) .setRealm(request.getRealm()) .setRequestTimeout(request.getRequestTimeout()); requestBuilder.setCharset(request.getCharset()); if (isNonEmpty(request.getFormParams())) requestBuilder.setFormParams(request.getFormParams()); else if (request.getStringData() != null) requestBuilder.setBody(request.getStringData()); else if (request.getByteData() != null) requestBuilder.setBody(request.getByteData()); else if (request.getByteBufferData() != null) requestBuilder.setBody(request.getByteBufferData()); else if (request.getBodyGenerator() != null) requestBuilder.setBody(request.getBodyGenerator()); requestBuilder.setHeaders(propagatedHeaders(request, realm, keepBody)); if (!cookies.isEmpty()) for (Cookie cookie : cookies) requestBuilder.addOrReplaceCookie(cookie); requestBuilder.setVirtualHost(request.getVirtualHost());
RequestBuilder builder = new RequestBuilder(method); builder.setUrl(url); builder.setQueryParams(queryParameters); stringListMap.forEach((key, values) -> values.forEach(value -> builder.addFormParam(key, value))); } else { builder.setBody(stringBody); builder.setCharset(charset); } else if (body instanceof JsonNode) { JsonNode jsonBody = (JsonNode) body; builder.setBody(new ByteArrayBodyGenerator(bodyBytes)); } else if (body instanceof File) { File fileBody = (File) body; FileBodyGenerator bodyGenerator = new FileBodyGenerator(fileBody); builder.setBody(bodyGenerator); } else if (body instanceof InputStream) { InputStream inputStreamBody = (InputStream) body; InputStreamBodyGenerator bodyGenerator = new InputStreamBodyGenerator(inputStreamBody); builder.setBody(bodyGenerator); } else if (body instanceof Source) { Publisher<ByteBuffer> publisher = sourceBody.map(ByteString::toByteBuffer) .runWith(Sink.asPublisher(AsPublisher.WITHOUT_FANOUT), materializer); builder.setBody(publisher, contentLength); } else { throw new IllegalStateException("Impossible body: " + body);
private Request req(String method, String url) { RequestBuilder builder = new RequestBuilder(method); if (realm != null) { builder.setRealm(realm); } else { builder.addHeader("Authorization", "Bearer " + oauthToken); } builder.setUrl(RESTRICTED_PATTERN.matcher(url).replaceAll("+")); // replace out %2B with + due to API restriction return builder.build(); }
final Request nextRequest = new RequestBuilder(future.getRequest()).setHeaders(request.getHeaders()).setRealm(newRealm).build();
/** * Invoke this API if you want to set the Range header on your {@link Request} based on the last valid bytes * position. * * @param request {@link Request} * @return a {@link Request} with the Range header properly set. */ public Request adjustRequestRange(Request request) { Long ri = resumableIndex.get(request.getUrl()); if (ri != null) { byteTransferred.set(ri); } // The Resumable if (resumableListener != null && resumableListener.length() > 0 && byteTransferred.get() != resumableListener.length()) { byteTransferred.set(resumableListener.length()); } RequestBuilder builder = new RequestBuilder(request); if (request.getHeaders().get(RANGE) == null && byteTransferred.get() != 0) { builder.setHeader(RANGE, "bytes=" + byteTransferred.get() + "-"); } return builder.build(); }
@Override public CompletionStage<JsonStructure> queryAsJson(ConnectionRequestsQuery query) { Objects.requireNonNull(query); if (!MediaType.APPLICATION_JSON.equals(acceptMimeType)) { throw new UnsupportedOperationException("This method is only available with a JSON deserializer."); } final String url = String.format("%s/rest/external/network/requests", endpoint); return execute(authenticated(query, new RequestBuilder(GET) .setUrl(url) .setHeader(HttpHeaders.ACCEPT, acceptMimeType))) .thenApply(r -> { if (r.getStatusCode() == 200) { return deserializer.parseToObject(r.getResponseBodyAsStream()); } throw parseHttpStatusCode(query.getUserContext(), r); }); }
public <T> FilterContext<T> filter(FilterContext<T> ctx) { if (replay.getAndSet(false)) { Request request = new RequestBuilder(ctx.getRequest()).addHeader("X-Replay", "true").build(); return new FilterContext.FilterContextBuilder<T>().asyncHandler(ctx.getAsyncHandler()).request(request).replayRequest(true).build(); } return ctx; } };
RequestBuilder builder = new RequestBuilder(); builder.setUrl(configuration().getServerURL()); builder.setMethod(configuration().getHttpMethod()); builder.setHeaders(headers); builder.setQueryParams(queryParams); client.executeRequest(builder.build(), new AsyncCompletionHandler<Void>() { @Override public Void onCompleted(org.asynchttpclient.Response clientResponse) throws Exception {
@Test public void testSettingQueryParamsBeforeUrlShouldNotProduceNPE() { RequestBuilder requestBuilder = new RequestBuilder(); requestBuilder.setQueryParams(singletonList(new Param("key", "value"))); requestBuilder.setUrl("http://localhost"); Request request = requestBuilder.build(); assertEquals(request.getUrl(), "http://localhost?key=value"); }
RequestBuilder nextRequestBuilder = new RequestBuilder(future.getCurrentRequest()).setHeaders(requestHeaders); if (future.getCurrentRequest().getUri().isSecured()) { nextRequestBuilder.setMethod(CONNECT); final Request nextRequest = nextRequestBuilder.build();
@Test public void testChaining() { Request request = get("http://foo.com").addQueryParam("x", "value").build(); Request request2 = new RequestBuilder(request).build(); assertEquals(request2.getUri(), request.getUri()); }