Avatar billede razersedge Nybegynder
31. maj 2004 - 13:50 Der er 1 løsning

IllegalStateException og IOException?

Jeg har et problem med to exceptions som opstår på et par kritiske steder i min midlet. Jeg skal oprette forbindelse til en HTTPS server, requeste en side med GET og modtage denne.

IllegalStateException'en opstår når jeg gennem min klasse Sender vil sende følgende streng til serveren; "GET /rdr/pprdr.asp HTTP/1.0", klassen sender godt nok strengen men rejser samtidigt en IllegalStateException:
java.lang.IllegalStateException: Write attempted after request finished
Jeg forstår ikke hvorfor, da jeg et andet sted i mit program har en anden instans af samme klasse som virker upåklageligt? Koden der sender strengen er følgende:
try {
                System.out.println("Sender: Writing..."+message+"\n");
                os.write(message.getBytes());
                System.out.println("Sender: Data Written\n");
            } catch (IOException ioe) {
                ioe.printStackTrace();
            } catch (IllegalStateException ise) {
                System.out.println("Sender :"+ise.toString());
            }
(Sig til hvis i skal se mere af klassen.)

IOException'en opstår når starter en while løkke som skal read()'e modtaget data, efter jeg har sat min Sender klasse til at sende strengen:
java.io.IOException: error 10053 during TCP read
Jeg kan derfor ikke modtage noget data fra denne server?

Koden jeg benytter til at starte min Sender klasse og modtage data ser ud som følgende:

try {

        System.out.println("Starting HTTPS Requests");


        HttpsConnection sc = (HttpsConnection) Connector.open("https://"+sServer+":443");
        InputStream    is = sc.openInputStream();
        OutputStream    os = sc.openOutputStream();


        Sender SENDER = new Sender(os);
        SENDER.send("GET "+sFile+" HTTP/1.0");


        while (true) {
              StringBuffer S = new StringBuffer();
              String Str    = new String();
              int C          = 0;

              while (((C = is.read()) != -1) && (stop != true)) {
                        S.append( (char) C );
              }
              if (stop == true) {
                        break;
              }

              Str = S.toString();
              System.out.println(Str);
              break;
        }

} catch (Exception e) {
        System.out.println(e.toString()+" - HTTPS");
}

Det er måske værd at nævne at jeg allerede har en socket forbindelse kørende som har forbindelse til en anden server, forbindelsen til denne HTTPS server skal oprettes når en bestemt kommando modtages på socket forbindelsen. Denne socket forbindelse kører upåklageligt, modtager og sender alt uden exceptions.

På forhånd tak
Simon Jensen
Avatar billede razersedge Nybegynder
31. maj 2004 - 21:12 #1
Fik løst problemet
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester