通过HttpURLConnection模拟post表单提交

原创 2016年06月01日 17:32:26
复制代码
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;
    }
}
复制代码
版权声明:本文为博主原创文章,未经博主允许不得转载。

通过HttpURLConnection模拟post表单提交

import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import org.juni...
  • AlbertFly
  • AlbertFly
  • 2016年06月02日 19:04
  • 893

通过HttpURLConnection模拟post表单提交

package junit; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; ...
  • hechurui
  • hechurui
  • 2016年01月04日 19:56
  • 5025

HttpUrlConnection 实现模拟POST表单传输

HttpUrlConnection实现模拟POST表单传输 概述:有的时候我们需要从后台与其他系统交互数据。而其他系统提供的接口,也就是交互方式可能是这样的,提供一个URL,http://IP:por...
  • zlx510tsde
  • zlx510tsde
  • 2014年01月09日 23:34
  • 897

Android模拟表单提交文字和图片(HttpClient AND HttpURLConnection)

在HttpClient还没有被废弃之前了,感觉模拟表单提交还是比较简单的,因为有MultipartEntityBuilder的支持。看下面代码:private String uploadFile(S...
  • u010904352
  • u010904352
  • 2016年02月23日 10:39
  • 941

HttpClient4模拟表单提交

这里用httpclient4.3模拟一个表单普通文本提交的方法 建一个servlet接受表单数据,只传递2个参数,name和password //servlet的访问地址是:http://localh...
  • ngaveup
  • ngaveup
  • 2013年11月26日 15:20
  • 4199

Android HttpURLConnection模拟浏览器Form上传提交二进制文件

/** * 上传文件 form post * * @category 各种类型,图片,文档等,统一视为file * @param url * @pa...
  • u013050256
  • u013050256
  • 2015年11月01日 10:47
  • 1166

通过HttpURLConnection模拟post表单提交

http://www.cnblogs.com/linjiqin/archive/2012/02/16/2353597.html
  • desonliu
  • desonliu
  • 2014年09月11日 22:21
  • 194

利用HttpURLConnection发送post请求上传多个文件

转自skyer_lei的专栏:http://blog.csdn.net/skyer_lei/article/details/6106709 本文要用java.net.HttpURLConnect...
  • memeda_bupt
  • memeda_bupt
  • 2016年01月25日 18:34
  • 1374

Linux下使用CURL模拟用户提交post表单

本文介绍在Linux下使用CURL命令提交post请求,在需要手动重复提交post表单时,使用本文介绍的方法可以达到事半功倍的效果。...
  • cjf_wei
  • cjf_wei
  • 2017年04月16日 10:35
  • 2682

Android中模拟post表单提交,带参数及文件参数

有时候需要通过Android客户端向服务器提交数据,带一些cans
  • princelxz
  • princelxz
  • 2014年05月30日 14:09
  • 1848
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:通过HttpURLConnection模拟post表单提交
举报原因:
原因补充:

(最多只允许输入30个字)