org.apache.ivy.util.url

## Interface URLHandler

- All Known Implementing Classes:
    AbstractURLHandler, BasicURLHandler, HttpClientHandler, URLHandlerDispatcher

      public interface URLHandler

  This interface is responsible for handling some URL manipulation (stream opening, downloading, check reachability, ...).

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static class` | `URLHandler.URLInfo`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `REQUEST_METHOD_GET` Using the slower REQUEST method for getting the basic URL infos.
    `static int` | `REQUEST_METHOD_HEAD` Using the faster HEAD method for getting the basic URL infos.
    `static URLHandler.URLInfo` | `UNAVAILABLE`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `download(java.net.URL src, java.io.File dest, CopyProgressListener l)`
    `long` | `getContentLength(java.net.URL url)` Returns the length of the target if the given url is reachable, and without error code in case of http urls.
    `long` | `getContentLength(java.net.URL url, int timeout)` Returns the length of the target if the given url is reachable, and without error code in case of http urls.
    `long` | `getLastModified(java.net.URL url)` Please prefer getURLInfo when several infos are needed.
    `long` | `getLastModified(java.net.URL url, int timeout)` Please prefer getURLInfo when several infos are needed.
    `URLHandler.URLInfo` | `getURLInfo(java.net.URL url)` Returns the URLInfo of the given url or a `UNAVAILABLE` instance, if the url is not reachable.
    `URLHandler.URLInfo` | `getURLInfo(java.net.URL url, int timeout)` never returns null, return UNAVAILABLE when url is not reachable
    `boolean` | `isReachable(java.net.URL url)` Please prefer getURLInfo when several infos are needed.
    `boolean` | `isReachable(java.net.URL url, int timeout)` Please prefer getURLInfo when several infos are needed.
    `java.io.InputStream` | `openStream(java.net.URL url)`
    `void` | `setRequestMethod(int requestMethod)`
    `void` | `upload(java.io.File src, java.net.URL dest, CopyProgressListener l)`

- - ### Field Detail

    - #### REQUEST_METHOD_GET

          static final int REQUEST_METHOD_GET

      Using the slower REQUEST method for getting the basic URL infos. Use this when getting errors behind a problematic/special proxy or firewall chain.
      See Also:
        Constant Field Values

    - #### REQUEST_METHOD_HEAD

          static final int REQUEST_METHOD_HEAD

      Using the faster HEAD method for getting the basic URL infos. Works for most common networks.
      See Also:
        Constant Field Values

    - #### UNAVAILABLE

          static final URLHandler.URLInfo UNAVAILABLE

  - ### Method Detail

    - #### isReachable

          boolean isReachable(java.net.URL url)

      Please prefer getURLInfo when several infos are needed.
      Parameters:
        `url` - the url to check
      Returns:
        true if the target is reachable

    - #### isReachable

          boolean isReachable(java.net.URL url,
                            int timeout)

      Please prefer getURLInfo when several infos are needed.
      Parameters:
        `url` - the url to check
      Returns:
        true if the target is reachable

    - #### getContentLength

          long getContentLength(java.net.URL url)

      Returns the length of the target if the given url is reachable, and without error code in case of http urls. Please prefer getURLInfo when several infos are needed.
      Parameters:
        `url` - the url to check
      Returns:
        the length of the target if available, 0 if not reachable

    - #### getContentLength

          long getContentLength(java.net.URL url,
                              int timeout)

      Returns the length of the target if the given url is reachable, and without error code in case of http urls.
      Parameters:
        `url` - the url to check
        `timeout` - the maximum time before considering an url is not reachable a timeout of zero indicates no timeout
      Returns:
        the length of the target if available, 0 if not reachable

    - #### getLastModified

          long getLastModified(java.net.URL url)

      Please prefer getURLInfo when several infos are needed.
      Parameters:
        `url` - the url to check
      Returns:
        last modified timestamp of the given url

    - #### getLastModified

          long getLastModified(java.net.URL url,
                             int timeout)

      Please prefer getURLInfo when several infos are needed.
      Parameters:
        `url` - the url to check
      Returns:
        last modified timestamp of the given url

    - #### getURLInfo

          URLHandler.URLInfo getURLInfo(java.net.URL url)

      Returns the URLInfo of the given url or a `UNAVAILABLE` instance, if the url is not reachable.
      Parameters:
        `url` - The url from which information is retrieved.
      Returns:
        The URLInfo extracted from the given url, or `UNAVAILABLE` when the url is not available.

    - #### getURLInfo

          URLHandler.URLInfo getURLInfo(java.net.URL url,
                                      int timeout)

      never returns null, return UNAVAILABLE when url is not reachable
      Parameters:
        `url` - The url from which information is retrieved.
        `timeout` - The timeout in milliseconds.
      Returns:
        The URLInfo extracted from the given url, or `UNAVAILABLE` when the url is not available.

    - #### openStream

          java.io.InputStream openStream(java.net.URL url)
                                         throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### download

          void download(java.net.URL src,
                      java.io.File dest,
                      CopyProgressListener l)
                        throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### upload

          void upload(java.io.File src,
                    java.net.URL dest,
                    CopyProgressListener l)
                      throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### setRequestMethod

          void setRequestMethod(int requestMethod)