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

📄 processwml.java

📁 j2me radius soket radius client
💻 JAVA
字号:
package org.httpClient.com;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

import org.gui.com.HttpClient;
import org.gui.com.WMLForm;
import org.kxml2.io.KXmlParser;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import java.io.*;
import javax.microedition.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import org.gui.com.MainForm;
public class ProcessWML {
	private String WML;
	private Display display;
	private boolean ishref = false;
	private boolean isanchor = false;
	private boolean haveMessage=false;
	private String time;
	private WMLForm arrayForm;
	private Image image;
	private String message ="";
	private KXmlParser parser;
	private RMStore cookieClass;
	private String item,Attribute,Value,URL,method;
	private HttpClient hc = null;
    public ProcessWML(String WML,Display display,
    		          long time,RMStore cookieClass,HttpClient hc){
    	this.WML = WML;
    	this.cookieClass = cookieClass;
    	this.display = display;
    	this.time = String.valueOf(time);
    	this.hc = hc;
    }
    public void process()throws XmlPullParserException, IOException{
    	ByteArrayInputStream bin = new ByteArrayInputStream(WML.getBytes());
		InputStreamReader in = new InputStreamReader(bin);
        parser = new KXmlParser();
		parser.setInput(in);
		int eventType = parser.getEventType();
		
		while (eventType != XmlPullParser.END_DOCUMENT) {
			if (eventType == XmlPullParser.START_DOCUMENT) {
				
			} else if (eventType == XmlPullParser.END_DOCUMENT) {
			
			} else if (eventType == XmlPullParser.START_TAG) {			
				  parserStartLag();
			} else if (eventType == XmlPullParser.END_TAG) {
				  parserEndLag();
			} else if (eventType == XmlPullParser.TEXT && !parser.isWhitespace()) {			  
				  parserTextNLink(parser.getText().trim());
			}
			eventType = parser.next();
		}
		arrayForm.append("Delayed:  " + time+"ms");
		display.setCurrent(arrayForm);	
    }  
    public void parserEndLag(){
    	if(parser.getName().equals("a")){
			  ishref = false;
		}else if(parser.getName().equals("do")){  //一个do结束标志一个消息
			  arrayForm.setMsg(message);
			  message = "";
		}else if(parser.getName().equals("anchor")){  //标志一个anchor消息
			 isanchor = false;
			 arrayForm.setMsg(message);
			 message ="";
		}
    }
    public void parserStartLag(){
    	 int  size = parser.getAttributeCount();
		  if(parser.getName().equals("card")){             //要建立一个Form
			   String id = null;
			   String title = null;
			   for(int i=0; i < size; i++){
				  if(parser.getAttributeName(i).equals("id")){
					  id = parser.getAttributeValue(i);
				  }else if(parser.getAttributeName(i).equals("title")){
					  title = parser.getAttributeValue(i);
				  }
			  }	 
			   arrayForm =new WMLForm(id,title,display,cookieClass,hc);
		  }else{
		    	parserItems();    	   
		 }
    }
    public void parserTextNLink(String str){
			   if(ishref){                                //是页面转换事件
				  arrayForm.newItemLink(str);
			   }else if(isanchor){		      //是连接服务器的事件
		          arrayForm.newItemEvent(str,true);
			   }else{
				   arrayForm.newItemText(str);  //为页面text
			   }
    }
    public void parserItems(){
    	item = parser.getName();
 	   int  size = 0;
 	   size = parser.getAttributeCount();
 	   String arg1 = null;
 	   boolean password = false;
        if(item.equals("input")){
     	   for(int i=0; i<size; i++){
     		   Attribute = parser.getAttributeName(i);
     		   Value = parser.getAttributeValue(i);
     		   if(Attribute.equals("name")){
     			   arg1 = Value;  
     		   }else if(Attribute.equals("type")){
     			   if(Value.equals("password")){
     				   password = true;
     			   }  
     		   }
     	   }	
     	   arrayForm.newInput(password, arg1);
        }else if(item.equals("do")){
     	  for(int i=0; i< size;i++){
     		  Attribute = parser.getAttributeName(i);
    		      Value = parser.getAttributeValue(i);
    		      if(Attribute.equals("label")){
    		    	  arg1 = Value;
    		      }
     	  }
     	      arrayForm.newItemEvent(arg1,false);
        }else if(item.equals("go")){
     	   for(int i=0; i< size;i++){
      		      Attribute = parser.getAttributeName(i);
     		      Value = parser.getAttributeValue(i);
     		      if(Attribute.equals("href")){
     		    	  URL = Value;
     		      }else{
     		    	  method= Value;
     		      }
      	  }
     	         arrayForm.setURLNMethod(URL, method);        //
        }else if(item.equals("postfield")){
     	   for(int i=0; i< size;i++){
   		      Attribute = parser.getAttributeName(i);
  		      Value = parser.getAttributeValue(i);
  		      if(Attribute.equals("name")){
  		    	   if(message !=""){
  		    		   message = message + "&";
  		    	   }
  		    	   message = message + Value + "=";
  		      }else{
  		    	   message = message + Value;
  		      }   
   	       }
        }else if(item.equals("img")){   //从服务器下载图片
     	   String imagehref = "";
     	   for(int i=0; i < size;i++){
     		   Attribute = parser.getAttributeName(i);
    		       Value = parser.getAttributeValue(i);
    		       if(Attribute.equals("src")){
    		    	   imagehref = Value.substring(1,Value.length()-3)+"png";
    		       }		       
     	   }  	   
     	   ImageItem imageItem = new ImageItem("",null,Item.LAYOUT_CENTER|Item.LAYOUT_NEWLINE_AFTER,"CampusTaoBao.com");
     	   DownImage downimage = new DownImage("http://www.xiaoyuantaobao.com:8080/myWml/"+imagehref,imageItem,arrayForm);
    	   downimage.start();
     	   arrayForm.newImage(imageItem);
        }else if(item.equals("a")){
           ishref = true;
     	   for(int i=0; i< size;i++){
    		  Attribute = parser.getAttributeName(i);
   		      Value = parser.getAttributeValue(i);
   		      if(Attribute.equals("title")){
   		    	   arg1 = Value;
   		      }else{ 
   		    	   arrayForm.sethref(false,Value.substring(getIndex(Value,'#')+1));//把href中的#删除
   		      }
    	   }	
        }else if(item.equals("p")){
     	  if(size>0)           //主要是用来判断<p>中的align
     	      arrayForm.setLayout(parser.getAttributeValue(0));
        }else if(item.equals("anchor")){
        	isanchor = true;
        }
	}
    public int getIndex(String str,char c){
    	 int result = 0;
    	 for(int i=0;i<str.length();i++){
    		 if(str.charAt(i)==c){
    			 return result =i;
    		 }
    	 }
    	 return result;
    }
} 

⌨️ 快捷键说明

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