Question

Cette question semble clairement ce qui se passe. J'ai déjà une connexion ouverte, le problème est que je ne sais pas pourquoi

En ce moment je teste juste mon http connexion et à l'extérieur.

Connexion:

HttpURLConnection con = openConnection(URLGenerator.getLoginURL(), true, true,"POST");
        String content = ...;
        writeToOutput(con, content);
        con.connect();
        String cookieVal = con.getHeaderField("Set-Cookie");
        if(cookieVal != null)
        {
            sessionId = cookieVal.substring(0, cookieVal.indexOf(";"));
        }
        con.disconnect();
        return con.getResponseCode();

Déconnexion:

    HttpURLConnection con = openConnection(URLGenerator.getLogoutURL(), true, true,"GET");
    String content = ...;
    writeToOutput(con, content);
    setCookies(con);
    con.connect();
    con.disconnect();
    return con.getResponseCode();

et pour les amateurs de code la fonction OpenConnection (parce que je sais que la première chose que les gens vont se poser est: « Où est cette fonction »

public static final HttpURLConnection openConnection(URL url, boolean in, boolean out,String requestMethode) throws IOException{
        HttpURLConnection con = (HttpURLConnection) url.openConnection ();
        con.setDoInput(in);
        con.setDoOutput (out);
        if(requestMethode == null){
            requestMethode = "GET";
        }
        con.setRequestMethod(requestMethode);
        con.setRequestProperty ("Content-Type", "application/x-www-form-urlencoded");
        return con;
    }

Ceci est la fonction qui déclenche la java.lang.IllegalStateException: Déjà connecté

public static final void setCookies(HttpURLConnection con){
        if(sessionId != null)
        {
            con.setRequestProperty("Cookie", sessionId);
        }
    }

Ce que je ne comprends pas pourquoi la connexion est toujours ouverte.

J'ai même essayé de déconnexion d'appel, mais il ne fonctionne pas.

Je pensais que le principal était de mettre en place un objet HttpURLConncetion et ne se connectent pour exécuter la demande, recevoir le résultat et qui a mis fin à la connexion.

Toutes les idées?

Merci Jason

Était-ce utile?

La solution

Vous devez les cookies set (demande de valeurs d'en-tête) avant vous écrivez au corps de la demande. Vous ne pouvez plus changer les en-têtes de demande lorsque le premier bit du corps de demande a été envoyé.

Alors, le changement

writeToOutput(con, content);
setCookies(con);

à

setCookies(con);
writeToOutput(con, content);

et ce problème devrait disparaître.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top