title: ObjectInputStream.read() returning -1, but readObject returns the object
body: <p>Am to serialize an object and deserialize the object but I get:</p>
  
  <ol>
  <li>0 for available()</li>
  <li>-1 for read()</li>
  <li><p>EOFException for readByte()</p>
  
  <pre><code>public static Element getCacheObject(String key, String cacheName, String server) throws IOException, ClassNotFoundException, ConnectException {
      String url = StringUtils.join(new String[] { server, cacheName, key}, "/");
      GetMethod getMethod = new GetMethod(url);
      ObjectInputStream oin = null;
      InputStream in = null;
      int status = -1;
      Element element = null;
      try {
          status = httpClient.executeMethod(getMethod);
          if (status == HttpStatus.SC_NOT_FOUND) { // if the content is deleted already               
              return null;
          }
          in = getMethod.getResponseBodyAsStream();
          oin = new ObjectInputStream(in);
          System.out.println("oin.available():" + oin.available()); // returns 0
          System.out.println("oin.read():" + oin.read()); // returns -1
          element = (Element) oin.readObject(); // returns the object
      }
      catch (Exception except) {
          except.printStackTrace();
          throw except;
      }
      finally {
          try {
              oin.close();
              in.close();
          }
          catch (Exception except) {
              except.printStackTrace();
          }
      }
  
      return element;
  }
  </code></pre></li>
  </ol>
  
  <p>What am I missing here?</p>