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