2017-09-12 3 views
-1

Ich habe ein Problem mit HttpUrlConnection.HttpUrlConnection entweder 'nicht autorisiert' oder 'bereits verbunden'

Ich möchte eine Datei aus dem Internet herunterladen.
Das erste Mal funktioniert es perfekt.
Aber wenn ich es erneut versuche, habe ich eine Ausnahme, ich bin "bereits verbunden" oder "connect in progress".

Exception in thread "main" java.lang.IllegalStateException: connect in 
progress 

ich gegoogelt und fand ich wie con.setDoOutput(true); einige Dinge entfernen müssen. Ich habe es getan und starte mein Programm neu. Jetzt habe ich eine weitere Ausnahme: .

Ich sehe nicht was zu tun ist. mein Code:

public boolean creerSession(String endpoint) throws IOException, JSONException, InterruptedException { 
    // Ouverture de la connexion 
    String url = new StringBuilder(endpoint).append("/auth").toString(); 
    URL obj = new URL(url); 
    validerAll(); 
    HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 

    // Définition des Request header 
    String urlParameters = new StringBuilder("username=").append(this.login).append("&password=").append(this.password).toString();   
    con.setRequestMethod("POST"); 
    con.getRequestMethod(); 

    // Envoi de la requete en POST 
    con.setDoOutput(true); 
    DataOutputStream wr = new DataOutputStream(con.getOutputStream()); 
    wr.writeBytes(urlParameters); 
    wr.flush(); 
    wr.close(); 

Jede Idee?

+0

Verwenden Sie 'disconnect()', sobald Sie mit dem 'HttpURLConnection con'-Objekt fertig sind? Dann müssen Sie eine neue Instanz erstellen, indem Sie bei jeder Anforderung erneut '(HttpURLConnection) obj.openConnection()' aufrufen. –

+1

Bitte verfolgen Sie die Ablaufverfolgung Ihrer beiden Ausnahmen in Ihrer Frage. – EJP

+0

"401 nicht autorisiert" Ich würde mir vorstellen, ist die Antwort, die Sie von der Web-Service erhalten haben, darauf hinweist, dass Ihre Anfrage nicht autorisiert war. Problem ist sehr wahrscheinlich in, wie Sie versuchen, autorisiert zu werden, wie falsche/fehlende Benutzer/Passwort-Kombination – Quintium

Antwort

0

@Emanuele Giona Sie haben Recht, disconnect() fehlte, aber selbst wenn ich es versuche, folgt der Fehler. @Quitium Das ist, was ich erklärte: Wenn ich

meinen Code Kommentar-
con.setRequestMethod("POST"); 
con.getRequestMethod(); 
con.setDoOutput(true); 

Ich habe eine nicht genehmigte Ausnahme

Stapelüberwachung (zum ersten Mal, es ist ok, ein paar Minuten später, kommt das Problem mit connect im Gang zurück ...)

Connected to the target VM, address: '127.0.0.1:61323', transport: 'socket' ticket de la session : XIZZAxWt36k0+lrEiVDKO6ijKitlwdwL1kx1EG1tiGGV3fJ3gw/In9zkBhTRjuTVWupmAh3xPQ1jRkByj50uRl0sn1vDdzE+gRiNHFIiF4TOmBQXwSkIPA== Exception in thread "main" java.lang.IllegalStateException: connect in progress at sun.net.www.protocol.http.HttpURLConnection.setRequestMethod(HttpURLConnection.java:517) at sun.net.www.protocol.https.HttpsURLConnectionImpl.setRequestMethod(HttpsURLConnectionImpl.java:374) at GedWSTesting.downloadFile(GedWSTesting.java:60) at GedWSTesting.main(GedWSTesting.java:32) Disconnected from the target VM, address: '127.0.0.1:61323', transport: 'socket'

Process finished with exit code 1

meinen Code (Zeilen 57 → 64)

// open the connection 
    HttpURLConnection con = (HttpURLConnection) downloadUrl.openConnection(); 
    con.setRequestProperty("Cookie", "LLCookie=" + mainSession.getTicket() + "; path=/livelink/; secure"); 
    con.setRequestMethod("HEAD"); 
    con.setInstanceFollowRedirects(false); 
    con.setReadTimeout(50000); 
    con.setConnectTimeout(10000); 
    con.connect(); 
+0

Hallo, Entschuldigung, so spät zu antworten. Das Problem war Trennen(). – Quezac

Verwandte Themen