Commit 82ebe78b by Michael Koch Committed by Michael Koch

2003-12-27 Michael Koch <konqueror@gmx.de>

	* gnu/java/net/protocol/http/Connection.java
	(connect): Call receiveReply().
	(receiveReply): Renamed from getHttpHeaders().
	(getOutputStream): Moved check on doOutput before check for connection
	state.

From-SVN: r75172
parent 5bd1d00e
2003-12-27 Michael Koch <konqueror@gmx.de> 2003-12-27 Michael Koch <konqueror@gmx.de>
* gnu/java/net/protocol/http/Connection.java
(connect): Call receiveReply().
(receiveReply): Renamed from getHttpHeaders().
(getOutputStream): Moved check on doOutput before check for connection
state.
2003-12-27 Michael Koch <konqueror@gmx.de>
* javax/print/attribute/ResolutionSyntax.java, * javax/print/attribute/ResolutionSyntax.java,
javax/print/attribute/SetOfIntegerSyntax.java, javax/print/attribute/SetOfIntegerSyntax.java,
javax/print/attribute/Size2DSyntax.java, javax/print/attribute/Size2DSyntax.java,
......
...@@ -172,7 +172,8 @@ public final class Connection extends HttpURLConnection ...@@ -172,7 +172,8 @@ public final class Connection extends HttpURLConnection
inputStream = new BufferedInputStream(socket.getInputStream()); inputStream = new BufferedInputStream(socket.getInputStream());
sendRequest(); sendRequest();
getHttpHeaders(); receiveReply();
connected = true; connected = true;
} }
...@@ -226,6 +227,62 @@ public final class Connection extends HttpURLConnection ...@@ -226,6 +227,62 @@ public final class Connection extends HttpURLConnection
} }
/** /**
* Read HTTP reply from inputStream.
*/
private void receiveReply() throws IOException
{
int buflen = 100;
byte[] buf = new byte[buflen];
String line = "";
boolean gotnl = false;
byte[] ch = new byte[1];
ch[0] = (byte) '\n';
while (true)
{
// Check for leftover byte from non-'\n' after a '\r'.
if (ch[0] != '\n')
line = line + '\r' + new String(ch, 0, 1);
int i;
// FIXME: This is rather inefficient.
for (i = 0; i < buflen; i++)
{
buf[i] = (byte) inputStream.read();
if (buf[i] == -1)
throw new IOException("Malformed HTTP header");
if (buf[i] == '\r')
{
inputStream.read(ch, 0, 1);
if (ch[0] == '\n')
gotnl = true;
break;
}
}
line = line + new String(buf, 0, i);
// A '\r' '\n' combo indicates the end of the header entry.
// If it wasn't found, cycle back through the loop and append
// to 'line' until one is found.
if (gotnl)
{
// A zero length entry signals the end of the headers.
if (line.length() == 0)
break;
// Store the header and reinitialize for next cycle.
hdrVec.addElement(line);
String key = getKey(line);
if (key != null)
hdrHash.put(key.toLowerCase(), getField(line));
line = "";
ch[0] = (byte) '\n';
gotnl = false;
}
}
}
/**
* Return a boolean indicating whether or not this connection is * Return a boolean indicating whether or not this connection is
* going through a proxy * going through a proxy
* *
...@@ -256,13 +313,21 @@ public final class Connection extends HttpURLConnection ...@@ -256,13 +313,21 @@ public final class Connection extends HttpURLConnection
return inputStream; return inputStream;
} }
/**
* Returns on OutputStream for writing to this connection.
*
* @return An OutputStream for this connection.
*
* @exception IOException If an error occurs
*/
public OutputStream getOutputStream() throws IOException public OutputStream getOutputStream() throws IOException
{ {
if (!doOutput)
throw new ProtocolException
("Want output stream while haven't setDoOutput(true)");
if (!connected) if (!connected)
connect(); connect();
if (! doOutput)
throw new ProtocolException("Can't open OutputStream if doOutput is false");
return socket.getOutputStream(); return socket.getOutputStream();
} }
...@@ -389,60 +454,4 @@ public final class Connection extends HttpURLConnection ...@@ -389,60 +454,4 @@ public final class Connection extends HttpURLConnection
else else
return str; return str;
} }
/**
* Read HTTP reply from inputStream.
*/
private void getHttpHeaders() throws IOException
{
int buflen = 100;
byte[] buf = new byte[buflen];
String line = "";
boolean gotnl = false;
byte[] ch = new byte[1];
ch[0] = (byte) '\n';
while (true)
{
// Check for leftover byte from non-'\n' after a '\r'.
if (ch[0] != '\n')
line = line + '\r' + new String(ch, 0, 1);
int i;
// FIXME: This is rather inefficient.
for (i = 0; i < buflen; i++)
{
buf[i] = (byte) inputStream.read();
if (buf[i] == -1)
throw new IOException("Malformed HTTP header");
if (buf[i] == '\r')
{
inputStream.read(ch, 0, 1);
if (ch[0] == '\n')
gotnl = true;
break;
}
}
line = line + new String(buf, 0, i);
// A '\r' '\n' combo indicates the end of the header entry.
// If it wasn't found, cycle back through the loop and append
// to 'line' until one is found.
if (gotnl)
{
// A zero length entry signals the end of the headers.
if (line.length() == 0)
break;
// Store the header and reinitialize for next cycle.
hdrVec.addElement(line);
String key = getKey(line);
if (key != null)
hdrHash.put(key.toLowerCase(), getField(line));
line = "";
ch[0] = (byte) '\n';
gotnl = false;
}
}
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment