首页 > 代码库 > 通过HttpURLConnection模拟post表单提交

通过HttpURLConnection模拟post表单提交

通过HttpURLConnection模拟post表单提交

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 = http://www.mamicode.com/outStream.toByteArray();//网页的二进制数据        outStream.close();        inStream.close();        return data;    }}

 

通过HttpURLConnection模拟post表单提交