From b9ad851eef2923e08c8e3521fd1e48322b2189ee Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Sun, 17 Nov 2002 16:16:52 +0000 Subject: HttpURLConnection.java ((getPermission): Take port into consideration. * java/net/HttpURLConnection.java ((getPermission): Take port into consideration. (getErrorStream): Implement. From-SVN: r59196 --- libjava/java/net/HttpURLConnection.java | 55 ++++++++++++++++++++++++++++++--- 1 file changed, 50 insertions(+), 5 deletions(-) (limited to 'libjava/java/net/HttpURLConnection.java') diff --git a/libjava/java/net/HttpURLConnection.java b/libjava/java/net/HttpURLConnection.java index 85a3ea4..e914b19 100644 --- a/libjava/java/net/HttpURLConnection.java +++ b/libjava/java/net/HttpURLConnection.java @@ -495,17 +495,62 @@ public abstract class HttpURLConnection extends URLConnection */ public Permission getPermission() throws IOException { - return new SocketPermission (url.getHost (), "connect"); + URL url = getURL(); + String host = url.getHost(); + int port = url.getPort(); + if (port == -1) + port = 80; + + host = host + ":" + port; + + return new SocketPermission(host, "connect"); } /** - * Returns the error stream if the connection failed but the server sent - * useful data nonetheless + * This method allows the caller to retrieve any data that might have + * been sent despite the fact that an error occurred. For example, the + * HTML page sent along with a 404 File Not Found error. If the socket + * is not connected, or if no error occurred or no data was returned, + * this method returns null. + * + * @return An InputStream for reading error data. */ public InputStream getErrorStream () { - // FIXME: implement this - return null; + if (!connected) + return(null); + + int code; + try + { + code = getResponseCode(); + } + catch(IOException e) + { + code = -1; + } + + if (code == -1) + return(null); + + if (((code/100) != 4) || ((code/100) != 5)) + return(null); + + try + { + PushbackInputStream pbis = new PushbackInputStream(getInputStream()); + + int i = pbis.read(); + if (i == -1) + return(null); + + pbis.unread(i); + return(pbis); + } + catch(IOException e) + { + return(null); + } } /** -- cgit v1.1