⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httptest.java

📁 j2me学习 简单例子
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package example.demowireless.http;

import java.io.*;

import java.util.*;

import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.pki.*;

public class HttpTest extends MIDlet implements CommandListener, Runnable {
   private Command exitCommand = new Command("Exit", Command.EXIT, 2);
   private Command getCommand = new Command("Get", Command.SCREEN, 1);
   private Command postCommand = new Command("Post", Command.SCREEN, 1);
   private Command headCommand = new Command("Head", Command.SCREEN, 1);
   private Command chooseCommand = new Command("Choose", Command.SCREEN, 2);
   private Command addCommand = new Command("Add", Command.SCREEN, 1);
   private Command addSaveCommand = new Command("OK", Command.SCREEN, 1);
   private Command okCommand = new Command("OK", Command.OK, 1);
   private Command cancelCommand = new Command("Cancel", Command.CANCEL, 1);
   private Display display;
   private String url;
   private Vector urls;
   private List list;
   private TextBox addTextBox;
   private Command currentCommand;
   private Thread commandThread;
   private int attempt;
   private TextBox t;
   private boolean firstTime;

   public HttpTest() {
       urls = new Vector();
       urls.addElement("http://cds.cmsg.sun.com:80/serverscript/serverscript");
       urls.addElement("http://www.sun.com/");
       urls.addElement("https://java.com");
       urls.addElement("https://www.baidu.com");
       urls.addElement("http://mms.kongzhong.com/");
       urls.addElement("-----------------------");
       urls.addElement("http://localhost:8080/");
       urls.addElement("-----------------------");
       urls.addElement("shttp://host/notsupportedprotocol");
       urls.addElement("http://:8080/missinghost");
       urls.addElement("http://mal\\formed:axyt/url???");
       urls.addElement("http://www.sun.com/no/such/page/");
       urls.addElement("http://www.sun.com:29999/no/such/port/");
       urls.addElement("http://no.such.site/");
       urls.addElement("http://www.sun.com/bad_proxy/");

       url = (String)urls.elementAt(0);
       display = Display.getDisplay(this);
       firstTime = true;
   }

   /**
    * Debug output routine.
    * @param s string to be printed.
    */
   static final void DEBUG(String s) {
       if (true) {
           System.out.println(s);
       }
   }

   /**
    * Converts a time to a string containing the corresponding
    * date.<br />
    * <b>NOTE:</b> This is here only because the J2ME date class does not
    * implement toString() in any meaningful way.
    * <p />
    * @param time time to be converted
    * @return a string representation of the time in
    *         the form "dayOfWeek, day mon year hour:min:sec GMT"
    */
   private String time2str(long time) {
       Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
       c.setTime(new Date(time));

       return c.toString();
   }

   /**
    * Start creates the thread to do the timing.
    * It should return immediately to keep the dispatcher
    * from hanging.
    */
   public void startApp() {
       if (firstTime) {
           // Use the specified URL is overriden in the descriptor
           String u = getAppProperty("HttpTest-Url");

           if (u != null) {
               url = u;
           }

           mainScreen();
           firstTime = false;
       } else {
           display.setCurrent(t);
       }
   }

   /**
    * Display the main screen.
    */
   void mainScreen() {
       String s =
           "URL = " + url + ". Press Get or Post to fetch it, or Choose to " + "use another URL";
       t = new TextBox("Http Test", s, s.length(), 0);
       setCommands(t, false);
       display.setCurrent(t);
   }

   /**
    * Pick a screen.
    */
   void chooseScreen() {
       list = new List("Choose URL", Choice.EXCLUSIVE);

       for (int i = 0; i < urls.size(); i++) {
           list.append((String)urls.elementAt(i), null);
       }

       setCommands(list, true);
       display.setCurrent(list);
   }

   /**
    * Add another screen.
    */
   void addScreen() {
       addTextBox = new TextBox("New URL", "http://", 200, 0);
       addTextBox.addCommand(addSaveCommand);
       addTextBox.addCommand(cancelCommand);
       addTextBox.setCommandListener(this);
       display.setCurrent(addTextBox);
   }

   /**
    * Read the content of the page. Don't care about the response
    * headers.
    * @param request type of HTTP request (GET or POST)
    */
   private void readContents(String request) {
       StringBuffer b = new StringBuffer();
       ++attempt;
       b.append("attempt " + attempt + " content of " + request + " " + url + "\n");

       HttpConnection c = null;
       OutputStream os = null;
       InputStream is = null;
       TextBox t = null;

       try {
           long len = -1;
           int ch = 0;
           long count = 0;
           int rc;

           DEBUG(request + " Page: " + url);
           c = (HttpConnection)Connector.open(url);
           DEBUG("c= " + c);

           c.setRequestMethod(request);

           c.setRequestProperty("foldedField", "first line\r\n second line\r\n third line");

           if (request == HttpConnection.POST) {
               String m = "Test POST text.";
               DEBUG("Posting: " + m);
               os = c.openOutputStream();
               os.write(m.getBytes());
               os.close();
           }

           rc = c.getResponseCode();

           if (rc != HttpConnection.HTTP_OK) {
               b.append("Response Code: " + c.getResponseCode() + "\n");
               b.append("Response Message: " + c.getResponseMessage() + "\n\n");
           }

           is = c.openInputStream();

           DEBUG("is = " + is);

           if (c instanceof HttpConnection) {
               len = ((HttpConnection)c).getLength();
           }

           DEBUG("len = " + len);

           if (len != -1) {
               // Read exactly Content-Length bytes
               DEBUG("Content-Length: " + len);

               for (int i = 0; i < len; i++) {
                   if ((ch = is.read()) != -1) {
                       if (ch <= ' ') {
                           ch = ' ';
                       }

                       b.append((char)ch);
                       count++;

                       if (count > 200) {
                           break;
                       }
                   }
               }
           } else {
               byte[] data = new byte[100];
               int n = is.read(data, 0, data.length);

               for (int i = 0; i < n; i++) {
                   ch = data[i] & 0x000000ff;
                   b.append((char)ch);
               }
           }

           try {
               if (is != null) {
                   is.close();
               }

               if (c != null) {
                   c.close();
               }
           } catch (Exception ce) {
               DEBUG("Error closing connection");
           }

           try {
               len = is.available();
               DEBUG("Inputstream failed to throw IOException after close");
           } catch (IOException io) {
               DEBUG("expected IOException (available())");
               io.printStackTrace();

               // Test to make sure available() is only valid while
               // the connection is still open.,
           }

           t = new TextBox("Http Test", b.toString(), b.length(), 0);
           is = null;
           c = null;
       } catch (IOException ex) {
           ex.printStackTrace();
           DEBUG(ex.getClass().toString());
           DEBUG(ex.toString());
           DEBUG("Exception reading from http");

           if (c != null) {
               try {
                   String s = null;

                   if (c instanceof HttpConnection) {
                       s = ((HttpConnection)c).getResponseMessage();
                   }

                   DEBUG(s);

                   if (s == null) {
                       s = "No Response message";
                   }

                   t = new TextBox("Http Error", s, s.length(), 0);
               } catch (IOException e) {
                   e.printStackTrace();

                   String s = e.toString();
                   DEBUG(s);

                   if (s == null) {
                       s = ex.getClass().getName();
                   }

                   t = new TextBox("Http Error", s, s.length(), 0);
               }

               try {
                   c.close();
               } catch (IOException ioe) {
                   // do not over throw current exception
               }
           } else {
               t = new TextBox("Http Error", "Could not open URL", 128, 0);
           }
       } catch (IllegalArgumentException ille) {
           // Check if an invalid proxy web server was detected.
           t = new TextBox("Illegal Argument", ille.getMessage(), 128, 0);
       } catch (Exception e) {
           t = new TextBox("Error", e.toString(), 128, 0);
       }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -