Mega Code Archive

 
Categories / Java / J2ME
 

Http Test

/*  * @(#)HttpTest.java 1.14 00/05/24 Copyright (c) 1999,2000 Sun Microsystems,  * Inc. All Rights Reserved.  *   * This software is the confidential and proprietary information of Sun  * Microsystems, Inc. ("Confidential Information"). You shall not disclose such  * Confidential Information and shall use it only in accordance with the terms  * of the license agreement you entered into with Sun.  *   * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE  * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED  * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR  * NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY  * LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS  * DERIVATIVES.  */ import java.io.IOException; import java.io.InputStream; import javax.microedition.io.Connector; import javax.microedition.io.HttpConnection; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.TextBox; import javax.microedition.midlet.MIDlet; public class HttpTest extends MIDlet implements CommandListener {   private Command exitCommand = new Command("Exit", Command.SCREEN, 2);   private Command reloadCommand = new Command("Reload", Command.SCREEN, 1);   private Command headCommand = new Command("Head", Command.HELP, 1);   private String getUrl = "http://sraju1:8080/hello.txt";   private String headUrl = "http://sraju1:8080/hello.txt?test#home";   private Display display;   public HttpTest() {     display = Display.getDisplay(this);   }   public void startApp() {     // Use the specified URL is overriden in the descriptor     String u = getAppProperty("HttpTest-Url");     if (u != null) {       getUrl = u;       headUrl = u + "?test#home";     }     readPage();   }   private void headPage() {     StringBuffer b = new StringBuffer();     try {       HttpConnection c = null;       c = (HttpConnection) Connector.open(headUrl);       //      c.setRequestMethod(request);       c.setRequestMethod(HttpConnection.HEAD);       b.append("URL: " + c.getURL() + "\nProtocol: " + c.getProtocol()           + "\nHost: " + c.getHost() + "\nFile: " + c.getFile()           + "\nRef: " + c.getRef() + "\nQuery: " + c.getQuery()           + "\nPort: " + c.getPort() + "\nMethod: "           + c.getRequestMethod());       InputStream is = c.openInputStream();       // DEBUG: request System.out.println(b) ;       b.append("\nResponseCode: " + c.getResponseCode()           + "\nResponseMessage:" + c.getResponseMessage()           + "\nContentLength: " + c.getLength() + "\nContentType: "           + c.getType() + "\nContentEncoding: " + c.getEncoding()           + "\nContentExpiration: " + c.getExpiration() + "\nDate: "           + c.getDate() + "\nLast-Modified: " + c.getLastModified()           + "\n\n");       int h = 0;       while (true) {         try {           String key = c.getHeaderFieldKey(h);           if (key == null)             break;           String value = c.getHeaderField(h);           b.append(key + ": " + value + "\n");           h++;           System.out.println(key + "(" + h + "): " + value);         } catch (Exception e) {           System.out.println("Exception while fetching headers");           break;         }       }       try {         is.close();         c.close();       } catch (Exception ce) {         System.out.println("Error closing connection");       }       TextBox t = new TextBox("Http Test", b.toString(), 1024, 0);       System.out.println("String read from URL: " + getUrl + " - is: "           + b.toString());       t.addCommand(reloadCommand);       t.addCommand(exitCommand);       t.setCommandListener(this);       display.setCurrent(t);     } catch (IOException ex) {       System.out.println("Exception reading from http:" + ex);     }   }   private void readPage() {     StringBuffer b = new StringBuffer();     HttpConnection c = null;     TextBox t = null;     try {       long len = 0;       int ch = 0;       System.out.println("Read Page: " + getUrl);       c = (HttpConnection) Connector.open(getUrl);       InputStream is = c.openInputStream();       len = c.getLength();       if (len != -1) {         // Read exactly Content-Length bytes         // DEBUG: System.out.println("Content-Length: " + len);         for (int i = 0; i < len; i++)           if ((ch = is.read()) != -1)             b.append((char) ch);       } else {         // Read til the connection is closed.         // (Typical HTTP/1.0 script generated output)         while ((ch = is.read()) != -1) {           // DEBUG: System.out.println("'" + (char)ch + "' " +           // is.available() );           len = is.available(); // For HTTP 1.1 servers, chunked                       // reads.           b.append((char) ch);         }       }       try {         is.close();         c.close();       } catch (Exception ce) {         System.out.println("Error closing connection");       }       try {         len = is.available();         System.out             .println("Inputstream failed to throw IOException after close");       } catch (IOException io) {         // Test to make sure available() is only valid while         // the connection is still open.,       }       t = new TextBox("Http Test", b.toString(), 1024, 0);     } catch (IOException ex) {       System.out.println("Exception reading from http");       if (c != null) {         try {           String s = c.getResponseMessage();           System.out.println(s);           if (s == null)             s = "No Response message";           t = new TextBox("Http Error", s, 1024, 0);         } catch (IOException e) {           ex.printStackTrace();           String s = ex.toString();           System.out.println(s);           if (s == null)             s = ex.getClass().getName();           t = new TextBox("Http Error", s, 1024, 0);         }       } else {         t = new TextBox("Http Error", "Could not open URL", 1024, 0);       }     }     t.addCommand(reloadCommand);     t.addCommand(exitCommand);     t.addCommand(headCommand);     t.setCommandListener(this);     display.setCurrent(t);   }   /*    * private void readPage() {    *     * StringBuffer b = new StringBuffer();    *     * HttpConnection c = null; TextBox t = null; try { c = ( HttpConnection    * )Connector.open( getUrl ); InputStream is = c.openInputStream(); int ch =    * 0; while ( (ch = is.read() ) != -1 ) { b.append( ( char )ch ); }    * is.close(); c.close();    *     * t = new TextBox( "Http Test", b.toString(), 1024, 0 );    * System.out.println( "String read from URL: " + getUrl + " - is: " +    * b.toString() ); } catch ( IOException ex ) { System.out.println(    * "Exception reading from http" ); if (c != null) { try { String s =    * c.getResponseMessage(); System.out.println( s ); if ( s == null ) s = "No    * Response message"; t = new TextBox( "Http Error", s, 1024, 0 ); } catch (    * IOException e ) { String s = ex.toString(); System.out.println( s ); if (    * s == null ) s = ex.getClass().getName(); t = new TextBox( "Http Error",    * s, 1024, 0 ); } } else { t = new TextBox( "Http Error", "Could not open    * URL", 1024, 0 ); } } t.addCommand( reloadCommand ); t.addCommand(    * exitCommand ); t.addCommand( headCommand ); t.setCommandListener( this );    * display.setCurrent( t ); }    */   /*    * private void headPage() {    *     * StringBuffer b = new StringBuffer(); HttpConnection c = null; InputStream    * is = null;    *     * try { c = ( HttpConnection )Connector.open( headUrl );    * System.out.println( "Going to setRequestMethod()... " );    * c.setRequestMethod( HttpConnection.HEAD ); System.out.println( "Going to    * get Properties " ); b.append ( "URL: " + c.getURL( ) + "\nProtocol: " +    * c.getProtocol() + "\nHost: " + c.getHost() + "\nFile: " + c.getFile() +    * "\nRef: " + c.getRef() + "\nQuery: " + c.getQuery() + "\nPort: " +    * c.getPort() + "\nMethod: " + c.getRequestMethod()) ;    *     * System.out.println( "Gonna openInputStream... " ); is =    * c.openInputStream();    *     * System.out.println( "Going to get Properties after OpeninputStream" );    * b.append( "\nResponseCode: " + c.getResponseCode() + "\nResponseMessage:" +    * c.getResponseMessage() + "\nContentLength: " + c.getLength() +    * "\nContentType: " + c.getType() + "\nContentEncoding: " + c.getEncoding() +    * "\nContentExpiration: " + c.getExpiration() + "\nDate: " + c.getDate() +    * "\nLast-Modified: " + c.getLastModified() + "\n\n" );    *     * System.out.println( "Done getting properties after OpenInputStream " );    * int h = 0 ; while ( true ) { try {    *     * System.out.println( "Gonna get HeaderFieldKey... " ); String key =    * c.getHeaderFieldKey( h ); System.out.println( "Gonna get HeaderField... " );    * System.out.println( h + ", HeaderFieldKey is: " + key ); String value =    * c.getHeaderField( h ); System.out.println( h + ", HeaderField is: " +    * value ); b.append ( key + ": " + value + "\n" ); h++ ; } catch (    * Exception e ) { e.printStackTrace(); break; } }    *     * TextBox t = new TextBox( "Http Test", b.toString(), 1024, 0 );    * System.out.println ( b.toString() );    *     * t.addCommand( reloadCommand ); t.addCommand( exitCommand );    * t.setCommandListener( this ); display.setCurrent( t );    *  } catch ( IOException ex ) { System.out.println( "Exception reading from    * http" ); ex.printStackTrace(); } finally { try { if ( is != null ) {    * is.close(); } if ( c != null ) { c.close(); } } catch( Exception e ) {    * e.printStackTrace(); }    *  } }    */   /**    * Pause signals the thread to stop by clearing the thread field. If stopped    * before done with the iterations it will be restarted from scratch later.    */   public void pauseApp() {   }   /**    * Destroy must cleanup everything. The thread is signaled to stop and no    * result is produced.    */   public void destroyApp(boolean unconditional) {   }   /*    * Respond to commands, including exit    */   public void commandAction(Command c, Displayable s) {     if (c == exitCommand) {       destroyApp(false);       notifyDestroyed();     } else if (c == reloadCommand)       readPage();     else if (c == headCommand)       headPage();   } }