Search in sources :

Example 6 with SimpleHttpResponse

use of org.apache.hc.client5.http.async.methods.SimpleHttpResponse in project weicoder by wdcode.

the class HttpAsyncClient method download.

/**
 * 下载文件
 *
 * @param url      get提交地址
 * @param callback 回调结果
 */
public static void download(String url, final CallbackVoid<byte[]> callback) {
    // 声明HttpGet对象
    HttpGet get = null;
    try {
        // 获得HttpGet对象
        get = new HttpGet(url);
        get.addHeader(new BasicHeader(HttpConstants.CONTENT_TYPE_KEY, HttpConstants.CONTENT_TYPE_VAL));
        // 执行get
        CLIENT.execute(SimpleRequestBuilder.copy(get).build(), new FutureCallback<SimpleHttpResponse>() {

            @Override
            public void failed(Exception ex) {
                LOG.error(ex);
            }

            @Override
            public void completed(SimpleHttpResponse result) {
                if (callback != null)
                    callback.callback(result.getBodyBytes());
            }

            @Override
            public void cancelled() {
            }
        });
    } catch (Exception e) {
        LOG.error(e);
    }
}
Also used : HttpGet(org.apache.hc.client5.http.classic.methods.HttpGet) BasicHeader(org.apache.hc.core5.http.message.BasicHeader) SimpleHttpResponse(org.apache.hc.client5.http.async.methods.SimpleHttpResponse)

Example 7 with SimpleHttpResponse

use of org.apache.hc.client5.http.async.methods.SimpleHttpResponse in project bender by Nextdoor.

the class Http2Transport method sendBatch.

public void sendBatch(byte[] raw) throws TransportException {
    /*
     * Wrap the call with retry logic to avoid intermittent ES issues.
     */
    Callable<SimpleHttpResponse> callable = () -> {
        SimpleHttpResponse resp;
        String responseString = null;
        SimpleRequestBuilder rb = SimpleRequestBuilder.post().setHttpHost(this.target).setPath(this.url.getPath());
        /*
       * Do the call, read response, release connection so it is available for use again, and
       * finally check the response.
       */
        if (this.useGzip) {
            rb = rb.addHeader("Accept-Encoding", "gzip");
            resp = execute(rb, raw, ContentType.DEFAULT_BINARY);
        } else {
            resp = execute(rb, raw, getUncompressedContentType());
        }
        responseString = resp.getBodyText();
        if (responseString == null || responseString == "") {
            responseString = "Empty Reponse";
        }
        checkResponse(resp, responseString);
        return resp;
    };
    RetryConfig config = new RetryConfigBuilder().retryOnSpecificExceptions(TransportException.class).withMaxNumberOfTries(this.retries + 1).withDelayBetweenTries(this.retryDelayMs, ChronoUnit.MILLIS).withExponentialBackoff().build();
    try {
        new CallExecutor(config).execute(callable);
    } catch (RetriesExhaustedException ree) {
        logger.warn("transport failed after " + ree.getCallResults().getTotalTries() + " tries.");
        throw new TransportException(ree.getCallResults().getLastExceptionThatCausedRetry());
    } catch (UnexpectedException ue) {
        throw new TransportException(ue);
    }
}
Also used : RetryConfigBuilder(com.evanlennick.retry4j.RetryConfigBuilder) CallExecutor(com.evanlennick.retry4j.CallExecutor) UnexpectedException(com.evanlennick.retry4j.exception.UnexpectedException) RetryConfig(com.evanlennick.retry4j.RetryConfig) RetriesExhaustedException(com.evanlennick.retry4j.exception.RetriesExhaustedException) SimpleRequestBuilder(org.apache.hc.client5.http.async.methods.SimpleRequestBuilder) TransportException(com.nextdoor.bender.ipc.TransportException) SimpleHttpResponse(org.apache.hc.client5.http.async.methods.SimpleHttpResponse)

Aggregations

SimpleHttpResponse (org.apache.hc.client5.http.async.methods.SimpleHttpResponse)7 SimpleHttpRequest (org.apache.hc.client5.http.async.methods.SimpleHttpRequest)4 IOException (java.io.IOException)3 ExecutionException (java.util.concurrent.ExecutionException)3 ConnectionClosedException (org.apache.hc.core5.http.ConnectionClosedException)3 HttpRequest (org.apache.hc.core5.http.HttpRequest)3 Test (org.junit.Test)3 BasicHeader (org.apache.hc.core5.http.message.BasicHeader)2 Timer (com.codahale.metrics.Timer)1 CallExecutor (com.evanlennick.retry4j.CallExecutor)1 RetryConfig (com.evanlennick.retry4j.RetryConfig)1 RetryConfigBuilder (com.evanlennick.retry4j.RetryConfigBuilder)1 RetriesExhaustedException (com.evanlennick.retry4j.exception.RetriesExhaustedException)1 UnexpectedException (com.evanlennick.retry4j.exception.UnexpectedException)1 TransportException (com.nextdoor.bender.ipc.TransportException)1 HttpExchange (com.sun.net.httpserver.HttpExchange)1 CompletableFuture (java.util.concurrent.CompletableFuture)1 CountDownLatch (java.util.concurrent.CountDownLatch)1 SimpleRequestBuilder (org.apache.hc.client5.http.async.methods.SimpleRequestBuilder)1 HttpGet (org.apache.hc.client5.http.classic.methods.HttpGet)1