FAQ

Everything you always wanted to know about HTTP (but were afraid to ask).

How to save a binary file?

    final String link =
        "https://repo1.maven.org/maven2" +
        "/org/jodd/jodd-http/3.9.1/jodd-http-3.9.1.jar";

    HttpResponse response = HttpRequest
        .get(link)
        .send();

    byte[] bytes = response.bodyBytes();

    FileUtil.writeBytes(
        new File(SystemUtil.userHome(), "jodd-http.jar"), bytes);

How to follow multi redirects?

HttpRequest by default does not follow the redirect instruction sent in response. You can use HttpBrowser:

    HttpBrowser browser = new HttpBrowser();

    browser.sendRequest(HttpRequest.get("google.com"));

    // read response
    Response response = browser.getResponse();
    String page = browser.getPage();

Since v4 the HttpRequest has the flag followRedirects() to enable following the redirects:

    HttpResponse response =
        HttpRequest
            .get("google.com")
            .followRedirects(true)
            .send();

What is the difference between HttpRequest and HttpBrowser?

HttpRequest represents just a single request; clean and simple.

HttpBrowser emulates browsing of a website (i.e. set of URLs) like a browser. Besides sending requests, it also stores and resends cookies, maintaining the current user session. Moreover, the HttpBrowser uses new request on redirection following, allows common request headers for all the requests etc.