用于MIDP的URLEncoder类[1]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

由于MIDP没有J2SE对应的java.net.URLEncoder类,因此,要向服务器发送HTTP请求,必须自己进行URL编码,参考JDK1.4.2的src代码,将其改为一个能用在MIDP环境中的URLEncoder类:

// URLEncoder.java
package com.mboker.blog.midp.http;

import java.io.*;

/**
 * Encode url, just like java.net.URLEncoder.encode() in J2SE.<br>
 * NOTE: This class is modified from java.net.URLEncoder class in J2SE 1.4.
 *
 * @author Xuefeng
 */
class URLEncoder {

    private static final int MAX_BYTES_PER_CHAR = 10; // rather arbitrary limit, but safe for now

    private static boolean[] dontNeedEncoding;
    private static final int caseDiff = ('a' - 'A');

    static {
        dontNeedEncoding = new boolean[256];
        for (int i='a'; i<='z'; i++) {
            dontNeedEncoding[i] = true;
        }
        for (int i='A'; i<='Z'; i++) {
            dontNeedEncoding[i] = true;
        }
        for (int i='0'; i<='9'; i++) {
            dontNeedEncoding[i] = true;
        }
        dontNeedEncoding[' '] = true;
        dontNeedEncoding['-'] = true;
        dontNeedEncoding['_'] = true;
        dontNeedEncoding['.'] = true;
        dontNeedEncoding['*'] = true;
    }

    private URLEncoder() {}

    public static String encode(String s) {
     boolean wroteUnencodedChar = false;

        StringBuffer out = new StringBuffer(s.length());
        ByteArrayOutputStream buf = new ByteArrayOutputStream(MAX_BYTES_PER_CHAR);
        OutputStreamWriter writer = new OutputStreamWriter(buf);

本文关键:用于MIDP的URLEncoder类
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top