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

📄 headerfieldparser.java

📁 用Java写的彩信的程序。包括wsp/mime/mms几部分。
💻 JAVA
字号:
/* 
 * JVending - J2ME MMS Client
 *
 * Distributed under Apache style software license included with the source code.
 */

package org.jvending.messaging.mms;

import java.util.Enumeration;
import java.util.NoSuchElementException;

import java.io.IOException;

import org.jvending.messaging.wsp.tokens.*;

import org.jvending.messaging.mms.Field;
import org.jvending.messaging.mms.tokens.MmsDataOctetTokenizer;

import org.jvending.messaging.IParser;
import org.jvending.messaging.ITokenizer;
import org.jvending.messaging.MultimediaMessage;

import org.jvending.messaging.io.PeekInputStream;

/**
 * @author Shane Isbell
 * @version 1.0.0a
 * @created 04/03/27
 */

public class HeaderFieldParser implements IParser {

    private WspTokenizer tokenizer;

    private boolean moreFields = true;

    private HeaderFieldAssembler hfa;

    private PeekInputStream pis;

    public void parse(PeekInputStream pis, Object targetObject) {    
        this.pis = pis;   
        MultimediaMessage mmm = (MultimediaMessage) targetObject; 

        tokenizer = new WspTokenizer(pis);
        tokenizer.setDataOctetTokenizer(new MmsDataOctetTokenizer());
        hfa = new HeaderFieldAssembler();
        hfa.setTokenizer(tokenizer);
       
        try {
            Field field = null;
            while(this.hasMoreFields()) {
                field = this.getNextField();
                if(field != null) mmm.setHeader(field.getName(), field.getValue());
            }
        } catch(Exception e) {
            e.printStackTrace();
            System.out.println("FieldType:" + fieldType +":" + "TokenType:" + tokenType);
        }
    }

    private int fieldType;
    private Token tokenType;
   
    //FIX ME!!!!!: Need to include Non-Encoded Headers
    private Field getNextField() throws NoSuchElementException, IOException {
        if(this.tokenizer == null) throw new NoSuchElementException("Tokenizer is null");
        tokenType = (Token) tokenizer.nextElement();
        fieldType = tokenType.getIntValue();
        if(fieldType == -1) {//HACK: Skip unencoded headers
            if(pis.peekByte(1) == -1) {
              moreFields = false; //end this guy
            } //false alarm: Just String type
            return null;
        }
        Field field = hfa.getField(fieldType);
        if(field == null) moreFields = false;//FIX-ME: A Hack - don't like the way this is handled
        else if(field.getName().equals("CONTENT_TYPE")) moreFields = false;
        return field;       
    }

    private boolean hasMoreFields() {
        return moreFields;
    }

}

⌨️ 快捷键说明

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