通过HttpURLConnection模拟post表单提交

来源:互联网 发布:达芬奇 调色软件 编辑:程序博客网 时间:2024/04/29 01:31
package junit;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import org.junit.Test;import com.hrtx.util.StreamTool;public class EsmTest {    /**     * 通过HttpURLConnection模拟post表单提交     * @throws Exception     */    @Test    public void sendEms() throws Exception {        String wen = "MS2201828";        String btnSearch = "EMS快递查询";        URL url = new URL("http://www.kd185.com/ems.php");        HttpURLConnection conn = (HttpURLConnection) url.openConnection();        conn.setRequestMethod("POST");// 提交模式        // conn.setConnectTimeout(10000);//连接超时 单位毫秒        // conn.setReadTimeout(2000);//读取超时 单位毫秒        conn.setDoOutput(true);// 是否输入参数        StringBuffer params = new StringBuffer();        // 表单参数与get形式一样        params.append("wen").append("=").append(wen).append("&")              .append("btnSearch").append("=").append(btnSearch);        byte[] bypes = params.toString().getBytes();        conn.getOutputStream().write(bypes);// 输入参数        InputStream inStream=conn.getInputStream();        System.out.println(new String(StreamTool.readInputStream(inStream), "gbk"));    }}



/**     * 通过HttpURLConnection模拟post表单提交     *      * @param path     * @param params 例如"name=zhangsan&age=21"     * @return     * @throws Exception     */    public static byte[] sendPostRequestByForm(String path, String params) throws Exception{        URL url = new URL(path);        HttpURLConnection conn = (HttpURLConnection) url.openConnection();        conn.setRequestMethod("POST");// 提交模式        // conn.setConnectTimeout(10000);//连接超时 单位毫秒        // conn.setReadTimeout(2000);//读取超时 单位毫秒        conn.setDoOutput(true);// 是否输入参数        byte[] bypes = params.toString().getBytes();        conn.getOutputStream().write(bypes);// 输入参数        InputStream inStream=conn.getInputStream();        return StreamTool.readInputStream(inStream);    }



package com.hrtx.util;import java.io.ByteArrayOutputStream;import java.io.InputStream;public class StreamTool {    /**     * 从输入流中读取数据     * @param inStream     * @return     * @throws Exception     */    public static byte[] readInputStream(InputStream inStream) throws Exception{        ByteArrayOutputStream outStream = new ByteArrayOutputStream();        byte[] buffer = new byte[1024];        int len = 0;        while( (len = inStream.read(buffer)) !=-1 ){            outStream.write(buffer, 0, len);        }        byte[] data = outStream.toByteArray();//网页的二进制数据        outStream.close();        inStream.close();        return data;    }}



0 0