Java实现网络连接类

手机开发中常常需要用到网络连接发送数据,像web一样,手机中的请求也有GET请求和POST请求之分。
 以下是一个HttpProcess类,它提供了POST和GET请求的方式。

package com.thinkrace.UCHome.network;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;

/**
 *
 * @author Administrator
 */
public class HttpProcess {

    /**
     * HTTP GET请求方式
     * 此方法读取返回的xml时是一个字符一个字符读取的。
     * @param url
     * @return
     */
    public static String HttpGET(String url) {
        String content = null;
        try {
            //打开网络连接
            HttpConnection hc = (HttpConnection) Connector.open(url);
            hc.setRequestMethod(HttpConnection.GET);
            InputStreamReader isr = new InputStreamReader(hc.openInputStream(), "UTF-8");
            int ch = 0;
            StringBuffer buf = new StringBuffer();
            while ((ch = isr.read()) != -1) {
                buf.append((char) ch);
            }
            //关闭流
            isr.close();
            hc.close();
        } catch (IOException ex) {
            System.out.println("HttpGET方法出现异常");
            ex.printStackTrace();
        }
        return content;
    }

    /**
     * 分配固定内存的GET请求,无论返回的xml有多大,总是只显示5k
     * 超出的部分会被截断,剩余的将会用空白补齐
     * @param url
     * @return
     */
    public static String HttpGETByAssignMemory(String url) {
        String content = null;
        try {
            HttpConnection hc = (HttpConnection) Connector.open(url);
            hc.setRequestMethod(HttpConnection.GET);
            DataInputStream dis = new DataInputStream(hc.openDataInputStream());
            //分配5K的内存
            byte[] data = new byte[1024 * 5];
            dis.read(data);
            content = new String(data, "UTF-8");
        } catch (IOException ex) {
            System.out.println("HttpGETByAllocateMemory方法出现异常");
            ex.printStackTrace();
        }
        return content;
    }

    public static String HttpPOST(String url, String argument) {
        String xml = null;
        try {
            HttpConnection hc = (HttpConnection) Connector.open(url, Connector.READ_WRITE);
            hc.setRequestMethod(HttpConnection.POST);
            //设置POST的头信息,UserAgent(设置代理),Content-Language(语言),Content-Type(类型),Content-Length(POST的长度)
            hc.setRequestProperty("User-Agent", "Profile/MIDP-2.0 Configuration/CLDC-1.1");
            hc.setRequestProperty("Content-Language", "en-US");
            hc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            byte[] postData = argument.getBytes("UTF-8");
            hc.setRequestProperty("Content-Length",
                            Integer.toString(postData != null ? postData.length : 0));

            OutputStream out = hc.openOutputStream();
            out.write(postData);
            InputStream in = hc.openInputStream();
            DataInputStream dis = new DataInputStream(in);
            int ch = 0;
            StringBuffer buf = new StringBuffer();
            while((ch = dis.read()) != -1){
                buf.append((char)ch);
            }
            xml = buf.toString();
        } catch (IOException ex) {
            System.out.println("HttpPOST方法出现异常");
            ex.printStackTrace();
        }
        return xml;
    }

    /**
     * String转换成byte数组
     * @param str
     * @return
     */
    public static byte[] StringtoBytes(String str) {
        byte[] data = null;
        try {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            DataOutputStream dos = new DataOutputStream(baos);
            dos.writeUTF(str);
            data = baos.toByteArray();
            baos.close();
            dos.close();
        } catch (Exception ex) {
            System.out.println("StringtoBytes方法出现异常");
            ex.printStackTrace();
        }
        return data;
    }

    /**
     * byte[]数组转换成String
     * @param data
     * @return
     */
    public static String BytesToString(byte[] data) {
        ByteArrayInputStream bais = new ByteArrayInputStream(data);
        DataInputStream dis = new DataInputStream(bais);
        String str = null;
        try {
            str = dis.readUTF();
            bais.close();
            dis.close();
        } catch (Exception ex) {
            System.out.println("BytesToString方法出现异常");
            ex.printStackTrace();
        }
        return str;
    }
}