The Energy Detective Forums

General Category => Developer Support => Topic started by: ricoued on November 15, 2011, 09:45:24 AM

Title: Getting SocketException: Connection Reset when accessing /api/LiveData.xml
Post by: ricoued on November 15, 2011, 09:45:24 AM
Hi All,

I'm trying to access the live data from my TED5000, but I consistently get a "connection reset".
Here is the Java code I'm using. It works fine to get other URLs but not on the TED?


         urlConnection = url.openConnection();
         is = urlConnection.getInputStream();

         BufferedReader r = new BufferedReader(new InputStreamReader(is));
         StringBuffer buf = new StringBuffer();
         String line;
         while ((line = r.readLine()) != null) {
            buf.append(line);
         }
         is.close();


Help!

Thanks,
Eric
Title: Re: Getting SocketException: Connection Reset when accessing /api/LiveData.xml
Post by: TedDev on November 15, 2011, 11:26:27 PM
not sure what is going on there other than the xml file may not end with CRLF's (e.g. if it ends w/ linespace) so your r.readLine may be hanging waiting for data that is terminated before a CRLF is sent. I generally don't use readLine approach (I lean towards pulling all bytes from the stream and casting it).

However, for our current java apps, we are using Apache Commons HTTPClient (http://hc.apache.org/httpcomponents-client-ga/) to grab the data. You may want to look into that for your app as it provides many shortcuts to do exactly what you are trying to do.

String response = "";
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(url);
try{
       int statusCode = client.executeMethod(method);
       response = method.getResponseBodyAsString();
       System.out.println(response);
        method.releaseConnection();
} catch(IOException e) {
        e.printStackTrace(System.err);
}