* The socket we are connected to
*/
private Socket socket;
- private static Hashtable defRequestProperties = new Hashtable();
- private Hashtable requestProperties;
- private Hashtable hdrHash = new Hashtable();
- private Vector hdrVec = new Vector();
- private BufferedInputStream bufferedIn;
-
private static int proxyPort = 80;
private static boolean proxyInUse = false;
private static String proxyHost = null;
}
}
+ /**
+ * The InputStream for this connection.
+ */
+ private BufferedInputStream inputStream;
+
+ /**
+ * This is the object that holds the header field information
+ */
+ private Hashtable requestProperties = new Hashtable();
+ private Hashtable hdrHash = new Hashtable();
+ private Vector hdrVec = new Vector();
+
/**
* Calls superclass constructor to initialize
*/
protected Connection(URL url)
{
super(url);
- requestProperties = (Hashtable) defRequestProperties.clone();
}
- // Override method in URLConnection.
- public static void setDefaultRequestProperty(String key, String value)
- {
- defRequestProperties.put(key, value);
- }
-
- // Override method in URLConnection.
- public static String getDefaultRequestProperty(String key)
- {
- return (String) defRequestProperties.get(key);
- }
-
- // Override method in URLConnection.
public void setRequestProperty(String key, String value)
{
if (connected)
requestProperties.put(key, value);
}
- // Override method in URLConnection.
public String getRequestProperty(String key)
{
if (connected)
{
socket.close();
}
- catch (IOException ex)
+ catch (IOException e)
{
// Ignore errors in closing socket.
}
}
}
+ /**
+ * Return a boolean indicating whether or not this connection is
+ * going through a proxy
+ *
+ * @return true if using a proxy, false otherwise
+ */
public boolean usingProxy()
{
return proxyInUse;
}
- // Override default method in URLConnection.
public InputStream getInputStream() throws IOException
{
if (!connected)
if (!doInput)
throw new ProtocolException("Can't open InputStream if doInput is false");
- return bufferedIn;
+
+ return inputStream;
}
- // Override default method in URLConnection.
public OutputStream getOutputStream() throws IOException
{
if (!connected)
return socket.getOutputStream();
}
- // Override default method in URLConnection.
public String getHeaderField(String name)
{
if (!connected)
return (String) hdrHash.get(name.toLowerCase());
}
- // Override default method in URLConnection.
public Map getHeaderFields()
{
if (!connected)
return hdrHash;
}
- // Override default method in URLConnection.
public String getHeaderField(int n)
{
if (!connected)
return null;
}
- // Override default method in URLConnection.
public String getHeaderFieldKey(int n)
{
if (!connected)
return str;
}
+ /**
+ * Read HTTP reply from inputStream.
+ */
private void getHttpHeaders() throws IOException
{
// Originally tried using a BufferedReader here to take advantage of
// It is probably more robust than it needs to be, e.g. the byte[]
// is unlikely to overflow and a '\r' should always be followed by a '\n',
// but it is better to be safe just in case.
- bufferedIn = new BufferedInputStream(socket.getInputStream());
+ inputStream = new BufferedInputStream(socket.getInputStream());
int buflen = 100;
byte[] buf = new byte[buflen];
// FIXME: This is rather inefficient.
for (i = 0; i < buflen; i++)
{
- buf[i] = (byte) bufferedIn.read();
+ buf[i] = (byte) inputStream.read();
if (buf[i] == -1)
throw new IOException("Malformed HTTP header");
if (buf[i] == '\r')
{
- bufferedIn.read(ch, 0, 1);
+ inputStream.read(ch, 0, 1);
if (ch[0] == '\n')
gotnl = true;
break;