Java: Cómo hacer una sesión de navegación HTTP

Estoy intentando crear una aplicación Java que envíe algunas solicitudes POST a un servidor. La primera solicitud es la que tiene información de autenticación. Luego, cuando envío la siguiente solicitud, recibo la respuesta de que mi sesión ha expirado. Pero estoy enviando la siguiente solicitud dentro del mismo segundo, por lo que no se puede agotar el tiempo de espera.

Así que supongo que hay algo como una sesión HTTP en Java, que necesito usar para enviar mi solicitud de esa manera, el servidor sabe que sigue a la solicitud anterior.

He estado buscando en Google, pero no puedo encontrar nada. Solo algo sobre los servlets. Pero estoy creando una aplicación de escritorio.

PS: soy nuevo en el envío de solicitudes HTTP y este tipo de cosas.

Gracias por adelantado
Martijn

Edit: Este es el código que uso actualmente:

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author martijn
 */
public class PostRequest {

    private String _url;
    private List<PostParameter> params;

    public PostRequest(String url) {
        this._url = url;
        this.params = new ArrayList<PostParameter>();
    }

    public void addParam(String key, String value)
    {
        params.add(new PostParameter(key, value));
    }

    public String getURL()
    {
        return _url;
    }

    public InputStream request() throws IOException {
        URL url = new URL(this._url);
        URLConnection conn = url.openConnection();
        if (params.size() > 0) {

            conn.setDoOutput(true);

            StringBuilder data = new StringBuilder();
            for (int i = 0; i < params.size(); i++) {
                if (i > 0) {
                    data.append("&");
                }
                String key = params.get(i).key;
                String value = params.get(i).value;
                data.append(URLEncoder.encode(key, "UTF-8"));
                data.append("=");
                data.append(URLEncoder.encode(value, "UTF-8"));
            }

            OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
            wr.write(data.toString());
            wr.flush();
        }

        return conn.getInputStream();
    }

    public class PostParameter {

        public String key;
        public String value;

        public PostParameter(String key, String value) {
            this.key = key;
            this.value = value;
        }

        public PostParameter() {
        }

        public String getKey() {
            return key;
        }

        public String getValue() {
            return value;
        }

        public void setKey(String key) {
            this.key = key;
        }

        public void setValue(String value) {
            this.value = value;
        }
    }
}

Y luego envíe dos solicitudes una tras otra:

PostRequest postAuthentication = new PostRequest("http://blahblah.com");
postAuthentication.addParam("user", user);
postAuthentication.addParam("password", pass);
Utils.dumpReader(postAuthentication.request());

PostRequest postDoSomething = new PostRequest("http://blahblah.com/function.php");
postDoSomething.addParam("func", "blah");
postDoSomething.addParam("value", "14");
Utils.dumpReader(postDoSomething.request());
    // Here I'm getting the session is expired.

Respuestas a la pregunta(4)

Su respuesta a la pregunta