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

📄 formutil.java

📁 j2me简单实例,j2me教程加源码,希望大家喜欢
💻 JAVA
字号:
package com.j2medev.httpme.view;

import com.j2medev.httpme.HttpUtil;
import com.j2medev.httpme.tools.URLEncoder;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Item;

/**
 * Utility class to collect data from a lcdui form automaticlly.if you want to use the class you must use item
 * defined in com.j2medev.httpme.view package.if the form contained MyImageItem then use collectMultipart() method
 * ,httpme 0.1 only support one MyImageItem in a form.
 *
 * @author mingjava
 * @version 0.1 05/06/2005
 * @since httpme 0.1
 */
public class FormUtil {
    
    public static final String MY_TEXT_FIELD = "com.j2medev.httpme.view.MyTextField";
    public static final String MY_DATE_FIELD = "com.j2medev.httpme.view.MyDateField";
    public static final String MY_CHOICE_GROUP = "com.j2medev.httpme.view.MyChoiceGroup";
    public static final String MY_IMAGE_ITEM = "com.j2medev.httpme.view.MyImageItem";

    public FormUtil() {
    }
    
    /**
     * collect the data contained in the form,if the form contains a MyImageItem,you should use this method
     * @param form the form contains data
     * @return encoded data in byte[]
     */
    public static byte[] collectMultipart(Form form){
        int size = form.size();
        if(size == 0){
            throw new IllegalArgumentException("No item in the form");
        }
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        DataOutputStream dos = new DataOutputStream(baos);
        try{
            for(int i=0;i<size;i++){
                Item item = form.get(i);
                if(item.getClass().getName().equals(MY_TEXT_FIELD)){
                    dos.write(("--"+HttpUtil.BOUNDARY+"\r\n").getBytes());
                    MyTextField field = (MyTextField)item;
                    dos.write(("Content-Disposition: form-data; name=\""+field.getFieldName()+"\"\r\n\r\n").getBytes());
                    dos.write(URLEncoder.encode(field.getString(),"UTF-8").getBytes());
                    dos.write("\r\n".getBytes());
                }else if(item.getClass().getName().equals(MY_DATE_FIELD)){
                    dos.write(("--"+HttpUtil.BOUNDARY+"\r\n").getBytes());
                    MyDateField field = (MyDateField)item;
                    dos.write(("Content-Disposition: form-data; name=\""+field.getFieldName()+"\"\r\n\r\n").getBytes());
                    dos.write(URLEncoder.encode(field.getDateByString(),"UTF-8").getBytes());
                    dos.write("\r\n".getBytes());
                }else if(item.getClass().getName().equals(MY_CHOICE_GROUP)){
                    MyChoiceGroup field = (MyChoiceGroup)item;
                    dos.write(("--"+HttpUtil.BOUNDARY+"\r\n").getBytes());
                    dos.write(("Content-Disposition: form-data; name=\""+field.getFieldName()+"\"\r\n\r\n").getBytes());
                    String[] data = field.getSelectedItem();
                    String fieldName = field.getFieldName();
                    for(int j = 0;j<data.length;j++){
                        dos.write((fieldName+"="+URLEncoder.encode(data[j],"UTF-8")+"&").getBytes());
                    }
                    dos.write("\r\n".getBytes());
                }else if(item.getClass().getName().equals(MY_IMAGE_ITEM)){
                    MyImageItem field = (MyImageItem)item;
                    dos.write(("--"+HttpUtil.BOUNDARY+"\r\n").getBytes());
                    dos.write(("Content-Disposition: form-data; name=\""+field.getFieldName()+"\";filename=\""+field.getFileName()+"\"\r\n").getBytes());
                    dos.write("Content-Type: application/octet-stream\r\n\r\n".getBytes());
                    dos.write(field.getImageData());
                    dos.write("\r\n".getBytes());
                }
            }
            dos.write(("--"+HttpUtil.BOUNDARY+"--").getBytes());
            dos.write("\r\n".getBytes());
            dos.close();
        }catch(IOException ex){
            ex.printStackTrace();
        }
        return baos.toByteArray();
    }
    
    /**
     * collect the data contained in the form,if the form contains a MyImageItem,you should use collectMultipart()
     * @param form the form contains data
     * @return encoded data in byte[]
     */
    public static byte[] collect(Form form){
        StringBuffer sb = new StringBuffer();
        int size = form.size();
        if(size == 0){
            throw new IllegalArgumentException("No item in the form");
        }
        for(int i = 0;i<size;i++){
            Item item = form.get(i);
            System.out.println(item.getClass().getName());
            if(item.getClass().getName().equals(MY_TEXT_FIELD)){
                MyTextField field = (MyTextField)item;
                sb.append(field.getFieldName()+"="+URLEncoder.encode(field.getString(),"UTF-8")+"&");
            }else if(item.getClass().getName().equals(MY_DATE_FIELD)){
                MyDateField field = (MyDateField)item;
                sb.append(field.getFieldName()+"="+URLEncoder.encode(field.getDateByString(),"UTF-8")+"&");
            }else if(item.getClass().getName().equals(MY_CHOICE_GROUP)){
                MyChoiceGroup field = (MyChoiceGroup)item;
                String[] data = field.getSelectedItem();
                String fieldName = field.getFieldName();
                for(int j = 0;j<data.length;j++){
                    sb.append(fieldName+"="+URLEncoder.encode(data[j],"UTF-8")+"&");
                }
            }
        }
        return sb.toString().getBytes();
    }
}

⌨️ 快捷键说明

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