HTTPURLConnection.java (connect): Accept absolute and relative paths in Location header.
2005-04-27 Chris Burdess <dog@gnu.org> * java/net/protocol/http/HTTPURLConnection.java (connect): Accept absolute and relative paths in Location header. 2005-04-27 Chris Burdess <dog@gnu.org> * gnu/java/net/protocol/http/HTTPURLConnection.java: Throw FileNotFoundException and implement getErrorStream on 404. From-SVN: r98875
This commit is contained in:
parent
465ee71e97
commit
51282ceaf0
@ -1,3 +1,13 @@
|
||||
2005-04-27 Chris Burdess <dog@gnu.org>
|
||||
|
||||
* java/net/protocol/http/HTTPURLConnection.java (connect): Accept
|
||||
absolute and relative paths in Location header.
|
||||
|
||||
2005-04-27 Chris Burdess <dog@gnu.org>
|
||||
|
||||
* gnu/java/net/protocol/http/HTTPURLConnection.java: Throw
|
||||
FileNotFoundException and implement getErrorStream on 404.
|
||||
|
||||
2005-04-27 Sven de Marothy <sven@physto.se>
|
||||
|
||||
* java/util/TimeZone.java,
|
||||
|
@ -40,6 +40,7 @@ package gnu.java.net.protocol.http;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
@ -94,6 +95,7 @@ public class HTTPURLConnection
|
||||
|
||||
private Response response;
|
||||
private ByteArrayInputStream responseSink;
|
||||
private ByteArrayInputStream errorSink;
|
||||
|
||||
private HandshakeCompletedEvent handshakeEvent;
|
||||
|
||||
@ -281,11 +283,32 @@ public class HTTPURLConnection
|
||||
file = location.substring(end);
|
||||
retry = true;
|
||||
}
|
||||
// Otherwise this is not an HTTP redirect, can't follow
|
||||
else if (location.length() > 0)
|
||||
{
|
||||
// Malformed absolute URI, treat as file part of URI
|
||||
if (location.charAt(0) == '/')
|
||||
{
|
||||
// Absolute path
|
||||
file = location;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Relative path
|
||||
int lsi = file.lastIndexOf('/');
|
||||
file = (lsi == -1) ? "/" : file.substring(0, lsi + 1);
|
||||
file += location;
|
||||
}
|
||||
retry = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
responseSink = new ByteArrayInputStream(reader.toByteArray ());
|
||||
if (response.getCode() == 404)
|
||||
{
|
||||
errorSink = responseSink;
|
||||
throw new FileNotFoundException(url.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
while (retry);
|
||||
@ -455,6 +478,11 @@ public class HTTPURLConnection
|
||||
return responseSink;
|
||||
}
|
||||
|
||||
public InputStream getErrorStream()
|
||||
{
|
||||
return errorSink;
|
||||
}
|
||||
|
||||
public Map getHeaderFields()
|
||||
{
|
||||
if (!connected)
|
||||
|
Loading…
Reference in New Issue
Block a user