[Httpunit-commit] CVS: httpunit/src/com/meterware/httpunit HttpWebResponse.java,NONE,1.1 WebClient.j
Brought to you by:
russgold
From: Russell G. <rus...@us...> - 2000-11-21 20:45:02
|
Update of /cvsroot/httpunit/httpunit/src/com/meterware/httpunit In directory slayer.i.sourceforge.net:/tmp/cvs-serv6274/src/com/meterware/httpunit Modified Files: GetMethodWebRequest.java HttpException.java HttpInternalErrorException.java HttpNotFoundException.java ParsedHTML.java PostMethodWebRequest.java WebConversation.java WebForm.java WebRequest.java WebResponse.java Added Files: HttpWebResponse.java WebClient.java Log Message: Initial servletunit release ***** Error reading new file(2, 'No such file or directory') ***** Error reading new file(2, 'No such file or directory') Index: GetMethodWebRequest.java =================================================================== RCS file: /cvsroot/httpunit/httpunit/src/com/meterware/httpunit/GetMethodWebRequest.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- GetMethodWebRequest.java 2000/10/31 19:54:15 1.6 +++ GetMethodWebRequest.java 2000/11/21 20:44:58 1.7 @@ -44,6 +44,14 @@ } + /** + * Returns the HTTP method defined for this request. + **/ + public String getMethod() { + return "GET"; + } + + //--------------------------------------- package members --------------------------------------------- Index: HttpException.java =================================================================== RCS file: /cvsroot/httpunit/httpunit/src/com/meterware/httpunit/HttpException.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- HttpException.java 2000/10/12 16:16:35 1.1 +++ HttpException.java 2000/11/21 20:44:58 1.2 @@ -37,17 +37,31 @@ HttpException( int responseCode, String reason ) { - super( reason ); + _reason = reason; _responseCode = responseCode; } + public String getMessage() { + StringBuffer sb = new StringBuffer( "Error on HTTP request: " ); + sb.append( _responseCode ); + if (_reason != null) { + sb.append( " [" ); + sb.append( _reason ); + sb.append( " ]" ); + } + return sb.toString(); + } + + public int getResponseCode() { return _responseCode; } private int _responseCode; + + private String _reason; } Index: HttpInternalErrorException.java =================================================================== RCS file: /cvsroot/httpunit/httpunit/src/com/meterware/httpunit/HttpInternalErrorException.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- HttpInternalErrorException.java 2000/10/12 16:16:35 1.2 +++ HttpInternalErrorException.java 2000/11/21 20:44:58 1.3 @@ -29,7 +29,7 @@ public class HttpInternalErrorException extends HttpException { - HttpInternalErrorException( String url ) { + public HttpInternalErrorException( String url ) { super( HttpURLConnection.HTTP_INTERNAL_ERROR, url ); } Index: HttpNotFoundException.java =================================================================== RCS file: /cvsroot/httpunit/httpunit/src/com/meterware/httpunit/HttpNotFoundException.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- HttpNotFoundException.java 2000/10/12 16:16:35 1.2 +++ HttpNotFoundException.java 2000/11/21 20:44:58 1.3 @@ -30,7 +30,7 @@ public class HttpNotFoundException extends HttpException { - HttpNotFoundException( String url ) { + public HttpNotFoundException( String url ) { super( HttpURLConnection.HTTP_NOT_FOUND, url ); } Index: ParsedHTML.java =================================================================== RCS file: /cvsroot/httpunit/httpunit/src/com/meterware/httpunit/ParsedHTML.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- ParsedHTML.java 2000/10/31 19:54:15 1.10 +++ ParsedHTML.java 2000/11/21 20:44:58 1.11 @@ -52,6 +52,19 @@ /** + * Returns the form found in the page with the specified name. + * @exception SAXException thrown if there is an error parsing the response. + **/ + public WebForm getFormWithName( String name ) { + WebForm[] forms = getForms(); + for (int i = 0; i < forms.length; i++) { + if (forms[i].getName().equalsIgnoreCase( name )) return forms[i]; + } + return null; + } + + + /** * Returns the links found in the page in the order in which they appear. **/ public WebLink[] getLinks() { Index: PostMethodWebRequest.java =================================================================== RCS file: /cvsroot/httpunit/httpunit/src/com/meterware/httpunit/PostMethodWebRequest.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- PostMethodWebRequest.java 2000/10/31 19:54:15 1.7 +++ PostMethodWebRequest.java 2000/11/21 20:44:58 1.8 @@ -40,6 +40,14 @@ } + /** + * Returns the HTTP method defined for this request. + **/ + public String getMethod() { + return "POST"; + } + + //---------------------------------- WebRequest methods -------------------------------- Index: WebConversation.java =================================================================== RCS file: /cvsroot/httpunit/httpunit/src/com/meterware/httpunit/WebConversation.java,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- WebConversation.java 2000/11/10 18:48:37 1.17 +++ WebConversation.java 2000/11/21 20:44:58 1.18 @@ -19,22 +19,25 @@ * DEALINGS IN THE SOFTWARE. * *******************************************************************************************************************/ -import java.io.*; -import java.net.*; -import java.util.*; -import org.xml.sax.*; +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.Dictionary; +import java.util.Enumeration; + + /** * The context for a series of HTTP requests. This class manages cookies used to maintain * session context, computes relative URLs, and generally emulates the browser behavior * needed to build an automated test of a web site. * * @author Russell Gold - * @author Jan Ohrstrom - * @author Seth Ladd **/ -public class WebConversation { +public class WebConversation extends WebClient { /** @@ -44,261 +47,40 @@ } - /** - * Returns the name of the currently active frames. - **/ - public String[] getFrameNames() { - Vector names = new Vector(); - for (Enumeration e = _frameContents.keys(); e.hasMoreElements();) { - names.addElement( e.nextElement() ); - } - - String[] result = new String[ names.size() ]; - names.copyInto( result ); - return result; - } +//---------------------------------- protected members -------------------------------- /** - * Returns the response associated with the specified frame name. + * Creates a web response object which represents the response to the specified web request. **/ - public WebResponse getFrameContents( String frameName ) { - WebResponse response = (WebResponse) _frameContents.get( frameName ); - if (response == null) throw new NoSuchFrameException( frameName ); - return response; - } - - - /** - * Submits a GET method request and returns a response. - **/ - public WebResponse getResponse( String urlString ) throws MalformedURLException, IOException, SAXException { - return getResponse( new GetMethodWebRequest( urlString ) ); - } - - - /** - * Submits a web request and returns a response, using all state developed so far as stored in - * cookies as requested by the server. - **/ - public WebResponse getResponse( WebRequest request ) throws MalformedURLException, IOException, SAXException { + protected WebResponse newResponse( WebRequest request ) throws MalformedURLException, IOException { URLConnection connection = openConnection( request.getURL() ); request.completeRequest( connection ); - updateCookies( connection ); - - if (connection.getHeaderField( "Location" ) != null) { - delay( HttpUnitOptions.getRedirectDelay() ); - return getResponse( new RedirectWebRequest( request, connection.getHeaderField( "Location" ) ) ); - } else { - if (connection instanceof HttpURLConnection) validateHeaders( request, (HttpURLConnection) connection ); - WebResponse result = new WebResponse( this, request.getTarget(), request.getURL(), connection ); - if (result.isHTML()) { - removeSubFrames( request.getTarget() ); - _frameContents.put( request.getTarget(), result ); - createSubFrames( request.getTarget(), result.getFrameNames() ); - WebRequest[] requests = result.getFrameRequests(); - for (int i = 0; i < requests.length; i++) getResponse( requests[i] ); - } - return result; - } - } - - - private void validateHeaders( WebRequest request, HttpURLConnection connection ) throws HttpException, IOException { - if (connection.getHeaderField( "WWW-Authenticate" ) != null) { - throw new AuthorizationRequiredException( connection.getHeaderField( "WWW-Authenticate" ) ); - } else if (connection.getResponseCode() == HttpURLConnection.HTTP_INTERNAL_ERROR) { - throw new HttpInternalErrorException( request.getURLString() ); - } else if (connection.getResponseCode() == HttpURLConnection.HTTP_NOT_FOUND) { - throw new HttpNotFoundException( request.getURLString() ); - } else if (connection.getResponseCode() >= HttpURLConnection.HTTP_BAD_REQUEST) { - throw new HttpException( connection.getResponseCode(), request.getURLString() ); - } - } - - - private void delay( int numMilliseconds ) { - if (numMilliseconds == 0) return; - try { - Thread.sleep( numMilliseconds ); - } catch (InterruptedException e) { - // ignore the exception - } + return new HttpWebResponse( request.getTarget(), request.getURL(), connection ); } - private void createSubFrames( String targetName, String[] frameNames ) { - _subFrames.put( targetName, frameNames ); - for (int i = 0; i < frameNames.length; i++) { - _frameContents.put( frameNames[i], WebResponse.BLANK_RESPONSE ); - } - } - - - private void removeSubFrames( String targetName ) { - String[] names = (String[]) _subFrames.get( targetName ); - if (names == null) return; - for (int i = 0; i < names.length; i++) { - removeSubFrames( names[i] ); - _frameContents.remove( names[i] ); - _subFrames.remove( names[i] ); - } - } - - - /** - * Defines a cookie to be sent to the server on every request. - **/ - public void addCookie(String name, String value) { - _cookies.put( name, value ); - } - - - /** - * Returns the name of all the active cookies which will be sent to the server. - **/ - public String[] getCookieNames() { - String[] names = new String[ _cookies.size() ]; - int i = 0; - for (Enumeration e = _cookies.keys(); e.hasMoreElements();) { - names[i++] = (String) e.nextElement(); - } - return names; - } - - - /** - * Returns the value of the specified cookie. - **/ - public String getCookieValue( String name ) { - return (String) _cookies.get( name ); - } - - - /** - * Specifies the user agent identification. Used to trigger browser-specific server behavior. - **/ - public void setUserAgent(String userAgent) { - _userAgent = userAgent; - } - - - /** - * Returns the current user agent setting. - **/ - public String getUserAgent() { - return _userAgent; - } - - - /** - * Sets a username and password for a basic authentication scheme. - **/ - public void setAuthorization( String userName, String password ) { - _authorization = "Basic " + Base64.encode( userName + ':' + password ); - } - - //---------------------------------- private members -------------------------------- - /** The currently defined cookies. **/ - private Hashtable _cookies = new Hashtable(); - - - /** The current user agent. **/ - private String _userAgent; - - - /** The authorization header value. **/ - private String _authorization; - - - /** A map of frame names to current contents. **/ - private Hashtable _frameContents = new Hashtable(); - - - /** A map of frame names to frames nested within them. **/ - private Hashtable _subFrames = new Hashtable(); - - static { HttpURLConnection.setFollowRedirects( false ); } + private URLConnection openConnection( URL url ) throws MalformedURLException, IOException { URLConnection connection = url.openConnection(); connection.setUseCaches( false ); - sendAuthorization( connection ); - sendUserAgent( connection ); - sendCookies( connection ); + sendHeaders( connection ); return connection; } - private void sendAuthorization( URLConnection connection ) { - if (_authorization == null) return; - connection.setRequestProperty( "Authorization", _authorization ); - } - - - private void sendUserAgent ( URLConnection connection ) { - if (getUserAgent() == null) return; - connection.setRequestProperty( "User-Agent" , getUserAgent() ); - } - - - private void sendCookies( URLConnection connection ) { - if (_cookies.size() == 0) return; - - StringBuffer sb = new StringBuffer(); - for (Enumeration e = _cookies.keys(); e.hasMoreElements();) { - String name = (String) e.nextElement(); - sb.append( name ).append( '=' ).append( _cookies.get( name ) ); - if (e.hasMoreElements()) sb.append( ';' ); - } - connection.setRequestProperty( "Cookie", sb.toString() ); - } - - - private void updateCookies( URLConnection connection ) { - for (int i = 1; true; i++) { - String key = connection.getHeaderFieldKey( i ); - if (key == null) break; - if (HttpUnitOptions.isLoggingHttpHeaders()) { - System.out.println( "Header:: " + connection.getHeaderFieldKey( i ) + ": " + connection.getHeaderField(i) ); - } - if (!key.equalsIgnoreCase( "Set-Cookie" )) continue; - StringTokenizer st = new StringTokenizer( connection.getHeaderField( i ), "=;" ); - String name = st.nextToken(); - String value = st.nextToken(); - _cookies.put( name, value ); - }; - } -} - - - -class RedirectWebRequest extends WebRequest { - - RedirectWebRequest( WebRequest baseRequest, String relativeURL ) throws MalformedURLException { - super( baseRequest, relativeURL ); - } - -} - - - -class NoSuchFrameException extends RuntimeException { - - NoSuchFrameException( String frameName ) { - _frameName = frameName; - } - - - public String getMessage() { - return "No frame named " + _frameName + " is currently active"; + private void sendHeaders( URLConnection connection ) { + Dictionary headers = getHeaderFields(); + for (Enumeration e = headers.keys(); e.hasMoreElements();) { + String key = (String) e.nextElement(); + connection.setRequestProperty( key, (String) headers.get( key ) ); + } } - - private String _frameName; } Index: WebForm.java =================================================================== RCS file: /cvsroot/httpunit/httpunit/src/com/meterware/httpunit/WebForm.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- WebForm.java 2000/11/10 18:48:37 1.15 +++ WebForm.java 2000/11/21 20:44:58 1.16 @@ -34,7 +34,7 @@ /** - * Returns the target for this link. + * Returns the target for this form. **/ public String getTarget() { if (_node.getAttributes().getNamedItem( "target" ) == null) { @@ -42,6 +42,14 @@ } else { return getValue( _node.getAttributes().getNamedItem( "target" ) ); } + } + + + /** + * Returns the name of the form. + **/ + public String getName() { + return emptyIfNull( getValue( _node.getAttributes().getNamedItem( "name" ) ) ); } Index: WebRequest.java =================================================================== RCS file: /cvsroot/httpunit/httpunit/src/com/meterware/httpunit/WebRequest.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- WebRequest.java 2000/11/02 18:37:37 1.10 +++ WebRequest.java 2000/11/21 20:44:58 1.11 @@ -83,6 +83,26 @@ } + /** + * Returns the query string defined for this request. + **/ + public String getQueryString() { + return getParameterString(); + } + + + /** + * Returns the HTTP method defined for this request. + **/ + abstract + public String getMethod(); + + + public String toString() { + return getMethod() + " request for " + getURLString(); + } + + //------------------------------------- protected members ------------------------------------ Index: WebResponse.java =================================================================== RCS file: /cvsroot/httpunit/httpunit/src/com/meterware/httpunit/WebResponse.java,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- WebResponse.java 2000/11/10 18:48:37 1.22 +++ WebResponse.java 2000/11/21 20:44:58 1.23 @@ -20,17 +20,32 @@ * *******************************************************************************************************************/ -import java.io.*; -import java.net.*; -import java.util.*; -import org.xml.sax.*; -import org.w3c.dom.*; +import java.io.IOException; +import java.io.StringReader; -import java.lang.reflect.*; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +import java.net.URL; +import java.net.HttpURLConnection; + +import java.util.Enumeration; +import java.util.Hashtable; +import java.util.Vector; +import java.util.StringTokenizer; + +import org.w3c.dom.Document; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; + /** - * A response from a web server to an Http request. + * A response from a web server to a web request. **/ +abstract public class WebResponse { @@ -38,30 +53,46 @@ * Returns true if the response is HTML. **/ public boolean isHTML() { - return _contentType.equals( HTML_CONTENT ); + return getContentType().equals( HTML_CONTENT ); } /** - * Returns the response code associated with this response. + * Returns the URL which invoked this response. **/ - public int getResponseCode() { - return _responseCode; + public URL getURL() { + return _url; } /** - * Returns the URL which invoked this response. + * Returns the title of the page. **/ - public URL getURL() { - return _url; + public String getTitle() throws SAXException { + return getReceivedPage().getTitle(); + } + + + /** + * Returns the target of the page. + **/ + public String getTarget() throws SAXException { + return _target; } /** + * Returns the response code associated with this response. + **/ + abstract + public int getResponseCode(); + + + /** * Returns the content type of this response. **/ public String getContentType() { + if (_contentType == null) readContentTypeHeader(); return _contentType; } @@ -70,27 +101,50 @@ * Returns the character set used in this response. **/ public String getCharacterSet() { + if (_characterSet == null) readContentTypeHeader(); return _characterSet; } /** - * Returns the title of the page. + * Returns a list of new cookie names defined as part of this response. **/ - public String getTitle() throws SAXException { - return getReceivedPage().getTitle(); + public String[] getNewCookieNames() { + String[] names = new String[ getNewCookies().size() ]; + int i = 0; + for (Enumeration e = getNewCookies().keys(); e.hasMoreElements(); i++ ) { + names[i] = (String) e.nextElement(); + } + return names; } /** - * Returns the target of the page. + * Returns the new cookie value defined as part of this response. **/ - public String getTarget() throws SAXException { - return _target; + public String getNewCookieValue( String name ) { + return (String) getNewCookies().get( name ); } + + /** + * Returns the value for the specified header field. If no such field is defined, will return null. + * No more than one header may be defined for each key. + **/ + abstract + public String getHeaderField( String fieldName ); + + /** + * Returns the text of the response (excluding headers) as a string. Use this method in preference to 'toString' + * which may be used to represent internal state of this object. + **/ + abstract + public String getText(); + + + /** * Returns the names of the frames found in the page in the order in which they appear. **/ public String[] getFrameNames() throws SAXException { @@ -114,6 +168,15 @@ /** + * Returns the form found in the page with the specified name. + * @exception SAXException thrown if there is an error parsing the response. + **/ + public WebForm getFormWithName( String name ) throws SAXException { + return getReceivedPage().getFormWithName( name ); + } + + + /** * Returns the links found in the page in the order in which they appear. * @exception SAXException thrown if there is an error parsing the response. **/ @@ -198,47 +261,31 @@ } - /** - * Returns the text of the response (excluding headers) as a string. Use this method in preference to 'toString' - * which may be used to represent internal state of this object. - **/ - public String getText() { - return _responseText; - } - - public String toString() { - return _responseText; + return getText(); } - -//---------------------------------- package members -------------------------------- +//----------------------------------------- protected members ----------------------------------------------- - final static WebResponse BLANK_RESPONSE = new WebResponse( "<html><head></head><body></body></html>" ); - /** - * Constructs a response object from an input stream. - * @param conversation the web conversation which received the response + * Constructs a response object. * @param url the url from which the response was received * @param inputStream the input stream from which the response can be read **/ - WebResponse( WebConversation conversation, String target, URL url, URLConnection connection ) { - this( conversation, target, url, getResponseText( url, connection ) ); - readHeaders( connection ); + protected WebResponse( String target, URL url ) { + _url = url; + _target = target; } - /** - * Returns the web conversation of which this response is a part, and which contains the session - * context information required for further requests. - **/ - WebConversation getWebConversation() { - return _conversation; - } +//------------------------------------------ package members ------------------------------------------------ + + final static WebResponse BLANK_RESPONSE = new DefaultWebResponse( "<html><head></head><body></body></html>" ); + /** * Returns the frames found in the page in the order in which they appear. **/ @@ -259,72 +306,62 @@ //--------------------------------- private members -------------------------------------- - - final private static String endOfLine = System.getProperty( "line.separator" ); + final private static String DEFAULT_CONTENT_HEADER = "text/plain; charset=us-ascii"; - final private static String HTML_CONTENT = "text/html"; private WebFrame[] _frames; private ReceivedPage _page; - private String _responseText; + private String _contentType; - private String _contentType = "text/plain"; + private String _characterSet; - private String _characterSet = "us-ascii"; + private Hashtable _newCookies; - private int _responseCode; - // the following variables are essentially final; however, the JDK 1.1 compiler does not handle final variables properly with // multiple constructors that call each other, so the final qualifiers have been removed. private URL _url; - private WebConversation _conversation; - private String _target; - /** - * Constructs a response object from a text response. - **/ - private WebResponse( String responseText ) { - this( null, "", null, responseText ); - _contentType = HTML_CONTENT; + private Hashtable getNewCookies() { + if (_newCookies == null) { + _newCookies = new Hashtable(); + String cookieHeader = getHeaderField( "Set-Cookie" ); + if (cookieHeader != null) { + StringTokenizer st = new StringTokenizer( cookieHeader, "," ); + while (st.hasMoreTokens()) recognizeOneCookie( st.nextToken() ); + } + } + return _newCookies; } - /** - * Constructs a response object. - * @param conversation the web conversation which received the response - * @param url the url from which the response was received - * @param inputStream the input stream from which the response can be read - **/ - private WebResponse( WebConversation conversation, String target, URL url, String responseText ) { - _conversation = conversation; - _url = url; - _target = target; - _responseText = responseText; + private void recognizeOneCookie( String cookieSpec ) { + StringTokenizer st = new StringTokenizer( cookieSpec, "=;" ); + String name = st.nextToken().trim(); + String value = st.nextToken().trim(); + _newCookies.put( name, value ); } - - private static String getResponseText( URL url, URLConnection connection ) { - StringBuffer sb = new StringBuffer(); - try { - BufferedReader input = new BufferedReader( new InputStreamReader( connection.getInputStream() ) ); - String str; - while (null != ((str = input.readLine()))) { - sb.append( str ).append( endOfLine ); + private void readContentTypeHeader() { + String contentHeader = getHeaderField( "Content-type" ); + if (contentHeader == null) contentHeader = DEFAULT_CONTENT_HEADER; + StringTokenizer st = new StringTokenizer( contentHeader, ";=" ); + _contentType = st.nextToken(); + while (st.hasMoreTokens()) { + String parameter = st.nextToken(); + if (st.hasMoreTokens()) { + String value = st.nextToken(); + if (parameter.equalsIgnoreCase( "charset" )) _characterSet = value; } - input.close (); - return sb.toString(); - } catch (IOException e) { - throw new RuntimeException( "Unable to retrieve data from URL: " + url.toExternalForm() + " (" + e + ")" ); } } @@ -348,7 +385,7 @@ private ReceivedPage getReceivedPage() throws SAXException { if (_page == null) { if (!isHTML()) throw new RuntimeException( "Response is not HTML" ); - _page = new ReceivedPage( _url, _target, _responseText ); + _page = new ReceivedPage( _url, _target, getText() ); } return _page; } @@ -363,7 +400,7 @@ Object parser = constructor.newInstance( null ); Class[] parseMethodArgTypes = { InputSource.class }; - Object[] parseMethodArgs = { new InputSource( new StringReader( _responseText ) ) }; + Object[] parseMethodArgs = { new InputSource( new StringReader( getText() ) ) }; Method parseMethod = parserClass.getMethod( "parse", parseMethodArgTypes ); parseMethod.invoke( parser, parseMethodArgs ); @@ -392,33 +429,48 @@ } - private void readHeaders( URLConnection connection ) { - readContentTypeHeader( connection ); - try { - if (connection instanceof HttpURLConnection) { - _responseCode = ((HttpURLConnection) connection).getResponseCode(); - } else { - _responseCode = HttpURLConnection.HTTP_OK; - } - } catch (IOException e) { - } +} + + + +class DefaultWebResponse extends WebResponse { + + + DefaultWebResponse( String text ) { + super( "", null ); + _responseText = text; } - private void readContentTypeHeader( URLConnection connection ) { - String contentHeader = connection.getContentType(); - if (contentHeader != null) { - StringTokenizer st = new StringTokenizer( contentHeader, ";=" ); - _contentType = st.nextToken(); - while (st.hasMoreTokens()) { - String parameter = st.nextToken(); - if (st.hasMoreTokens()) { - String value = st.nextToken(); - if (parameter.equalsIgnoreCase( "charset" )) _characterSet = value; - } - } - } + /** + * Returns the response code associated with this response. + **/ + public int getResponseCode() { + return HttpURLConnection.HTTP_OK; } + + /** + * Returns the value for the specified header field. If no such field is defined, will return null. + **/ + public String getHeaderField( String fieldName ) { + if (fieldName.equals( "Content-type" )) { + return "text/html; charset=us-ascii"; + } else { + return null; + } + } + + + /** + * Returns the text of the response (excluding headers) as a string. Use this method in preference to 'toString' + * which may be used to represent internal state of this object. + **/ + public String getText() { + return _responseText; + } + + + private String _responseText; } |