- From: Erik <info@terwiel.com>
- Date: Tue, 5 Jan 2010 11:54:29 +0100
- To: <www-validator-css@w3.org>
- Message-ID: <000401ca8df5$74ed8eb0$5ec8ac10$@com>
I try to incorporate a validation in a Java program of mine: a CSS file is read and sent over the net to the validator. I then expect results back. Below is a piece of the code. I use examples from SUN, concerning sending/receiving over an URLConnection. I get an error 500 back from the server, along with the error message: Servlet has thrown exception:java.lang.IllegalStateException: Reader used What do I do wrong and how can I correct it ? import java.io.*; import java.net.*; import java.lang.Thread.*; public class CSSValidator { private URL url; private URLConnection connection; public CSSValidator () { try { url = new URL("http://jigsaw.w3.org/css-validator/validator"); connection = url.openConnection(); connection.setDoOutput(true); } catch (MalformedURLException me) { System.err.println("MalformedURLException: " + me); } catch (IOException ioe) { System.err.println("IOException: " + ioe); } } public String validateFile( String fn ) throws IOException { String line; StringBuffer response = new StringBuffer() ; try { BufferedReader b = new BufferedReader(new FileReader(fn )) ; PrintWriter outStream = new PrintWriter(connection.getOutputStream()); outStream.print("text="); while ((line = b.readLine()) != null) { line = URLEncoder.encode(line,"UTF-8"); response.append(line + "\n"); outStream.print(line); } outStream.close(); Thread.sleep(2000); } catch (IOException ioe) { System.out.println(ioe.getMessage()); } catch (InterruptedException ie) { System.out.println(ie.getMessage()); } System.out.println(response.toString()); response.delete(0, response.length()); // DataInputStream inStream = new DataInputStream(connection.getInputStream() BufferedReader inStream; try { inStream = new BufferedReader(new InputStreamReader(connection.getInputStream())); // ç Here the IOException occurs System.out.println("wait for response:"); } catch (IOException ioe) { if (! (connection instanceof HttpURLConnection)) throw ioe; InputStream err = ((HttpURLConnection) connection). getErrorStream(); if (err == null) throw ioe; inStream = new BufferedReader (new InputStreamReader(err)); System.out.println(ioe.getMessage()); } while ((line = inStream.readLine()) != null) { response.append(line + "\n"); } inStream.close(); return response.toString(); } }
Received on Tuesday, 5 January 2010 10:57:07 UTC