Java Tutorial/J2ME/StreamConnection

Материал из Java эксперт
Перейти к: навигация, поиск

Load text file from a URL

   <source lang="java">

/* License

* 
* Copyright 1994-2004 Sun Microsystems, Inc. All Rights Reserved.
* 
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*  
*  * Redistribution of source code must retain the above copyright notice,
*      this list of conditions and the following disclaimer.
* 
*  * Redistribution in binary form must reproduce the above copyright notice,
*      this list of conditions and the following disclaimer in the
*      documentation and/or other materials provided with the distribution.
* 
* Neither the name of Sun Microsystems, Inc. or the names of contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*  
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
* ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
* OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN")
* AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE
* AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
* DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
* REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
* INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY
* OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*  
* You acknowledge that this software is not designed, licensed or intended
* for use in the design, construction, operation or maintenance of any
* nuclear facility. 
*/

import java.io.IOException; import java.io.IOException; import java.io.InputStream; import javax.microedition.io.Connector; import javax.microedition.io.StreamConnection; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.TextBox; import javax.microedition.midlet.MIDlet; public class J2MEFirstExample extends MIDlet {

 private Display display;
 String url = "http://www.y.ru/hello.txt";
 public J2MEFirstExample() {
   display = Display.getDisplay(this);
 }
 /**
  * This will be invoked when we start the MIDlet
  */
 public void startApp() {
   try {
     getViaStreamConnection(url);
   } catch (IOException e) {
     e.printStackTrace();
   }
 }
 public void pauseApp() {
 }
 /**
  * Destroy must cleanup everything.
  */
 public void destroyApp(boolean unconditional) {
 }
 /**
  * read url via stream connection
  */
 void getViaStreamConnection(String url) throws IOException {
   StreamConnection c = null;
   InputStream s = null;
   StringBuffer b = new StringBuffer();
   TextBox t = null;
   try {
     c = (StreamConnection) Connector.open(url);
     s = c.openInputStream();
     int ch;
     while ((ch = s.read()) != -1) {
       b.append((char) ch);
     }
     System.out.println(b.toString());
     t = new TextBox("hello....", b.toString(), 1024, 0);
   } finally {
     if (s != null) {
       s.close();
     }
     if (c != null) {
       c.close();
     }
   }
   display.setCurrent(t);
 }

}</source>





Read from URL

   <source lang="java">

import java.io.IOException; import java.io.InputStream; import javax.microedition.io.Connector; import javax.microedition.io.StreamConnection; import javax.microedition.lcdui.Alert; import javax.microedition.lcdui.AlertType; import javax.microedition.lcdui.rumand; import javax.microedition.lcdui.rumandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.StringItem; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class J2MEHttpExample extends MIDlet implements CommandListener {

 private Command exit= new Command("Exit", Command.EXIT, 1), start= new Command("Start", Command.EXIT, 1);
 private Display display;
 private Form form = new Form("Customer Ranking");
 public J2MEHttpExample() {
   display = Display.getDisplay(this);
   form.addCommand(exit);
   form.addCommand(start);
   form.setCommandListener(this);
 }
 public void startApp() throws MIDletStateChangeException {
   display.setCurrent(form);
 }
 public void pauseApp() {
 }
 public void destroyApp(boolean unconditional) {
 }
 public void commandAction(Command command, Displayable displayable) {
   if (command == exit) {
     destroyApp(false);
     notifyDestroyed();
   } else if (command == start) {
     StreamConnection connection = null;
     InputStream in = null;
     StringBuffer buffer = new StringBuffer();
     try {
       connection = (StreamConnection) Connector.open("http://www.a.ru/");
       in = connection.openInputStream();
       int ch;
       while ((ch = in.read()) != -1) {
         if (ch != "\n") {
           buffer.append((char) ch);
         } else {
           String line = new String(buffer.toString());
           if (line.equals("o")) {
             int position = line.indexOf("alt=");
             Alert alert = new Alert("Alert", line.substring(position + 5, position + 8), null,
                 null);
             alert.setTimeout(Alert.FOREVER);
             alert.setType(AlertType.ERROR);
             display.setCurrent(alert);
           }
           buffer = new StringBuffer();
         }
       }
     } catch (IOException error) {
       Alert alert = new Alert("Error", "Cannot connect", null, null);
       alert.setTimeout(Alert.FOREVER);
       alert.setType(AlertType.ERROR);
       display.setCurrent(alert);
     }
   }
 }

}</source>