org.jvnet.robust_http_client

## Class RetryableHttpStream

- java.lang.Object
- - java.io.InputStream
  - - org.jvnet.robust_http_client.RetryableHttpStream

- All Implemented Interfaces:
    Closeable, AutoCloseable

      public class RetryableHttpStream
      extends InputStream

  `InputStream` implementation around `HttpURLConnection` that automatically reconnects if the connection fails in the middle.
  Author:
    Kohsuke Kawaguchi

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `HttpURLConnection` | `connection` `HttpURLConnection` to allow the caller to access HTTP resposne headers.
    `protected Proxy` | `proxy` Proxy, or null none is explicitly given (Java runtime may still decide to use a proxy, though.)
    `protected int` | `read` Number of bytes read so far.
    `int` | `totalLength` Total bytes of the entity.
    `URL` | `url` Where are we downloading from?

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RetryableHttpStream(URL url)` Connects to the given HTTP/HTTPS URL, by using the proxy auto-configured by the Java runtime.
    `RetryableHttpStream(URL url, Proxy proxy)` Connects to the given HTTP/HTTPS URL, by using the specified proxy.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected HttpURLConnection` | `connect()` Opens the URL and makes a connection.
    `int` | `read()`
    `int` | `read(byte[] b, int off, int len)`
    `protected void` | `shallWeRetry()` Subclass can override this method to determine if we should continue to retry, or abort.

    - ### Methods inherited from class java.io.InputStream

      `available, close, mark, markSupported, read, reset, skip`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### url

          public final URL url

      Where are we downloading from?

    - #### proxy

          protected final Proxy proxy

      Proxy, or null none is explicitly given (Java runtime may still decide to use a proxy, though.)

    - #### totalLength

          public final int totalLength

      Total bytes of the entity.

    - #### read

          protected int read

      Number of bytes read so far.

    - #### connection

          public final HttpURLConnection connection

      `HttpURLConnection` to allow the caller to access HTTP resposne headers. Do not use `URLConnection.getInputStream()`, however.

  - ### Constructor Detail

    - #### RetryableHttpStream

          public RetryableHttpStream(URL url)
                              throws IOException

      Connects to the given HTTP/HTTPS URL, by using the proxy auto-configured by the Java runtime.
      Throws:
        `IOException`

    - #### RetryableHttpStream

          public RetryableHttpStream(URL url,
                             Proxy proxy)
                              throws IOException

      Connects to the given HTTP/HTTPS URL, by using the specified proxy.
      Parameters:
        `proxy` - To force a direct connection, pass in `Proxy.NO_PROXY`.
      Throws:
        `IOException`

  - ### Method Detail

    - #### connect

          protected HttpURLConnection connect()
                                       throws IOException

      Opens the URL and makes a connection.
      Throws:
        `IOException`

    - #### shallWeRetry

          protected void shallWeRetry()
                               throws IOException

      Subclass can override this method to determine if we should continue to retry, or abort.

      If this method returns normally, we'll retry. By default, this method retries 5 times then quits.

      Throws:
        `IOException` - to abort the processing.

    - #### read

          public int read()
                   throws IOException

      Specified by:
        `read` in class `InputStream`
      Throws:
        `IOException`

    - #### read

          public int read(byte[] b,
                 int off,
                 int len)
                   throws IOException

      Overrides:
        `read` in class `InputStream`
      Throws:
        `IOException`

Copyright © 2015. All rights reserved.