java模拟http请求,通过流的方式发送数据,模拟接收流文件和json数据

项目里碰到过模拟ajax请求的案例,研究了一下,觉得 httpClient 是真心好用,由于模拟环境搞了大半天,httpclient就另外再写博文吧

下面的例子介绍流的方式发送和接收,这个就有点暴力了,想传啥都行:以字节流的方式发送数据(可以是任何数据)

看标题就知道了,简单粗暴的方法,管他什么格式,统统“流”过去,不过既然是模拟的,要配置好其他参数,对方才能正常接收到

发送方:

    /**
     * 以流的方式
     * 发送文件和json对象
     *
     * @return
     */
    public static String doPostFileStreamAndJsonObj(String url, List<String> fileList, JSONObject json) {
        String result = "";//请求返回参数
        String jsonString = json.toJSONString();//获得jsonstirng,或者toString都可以,只要是json格式,给了别人能解析成json就行
//        System.out.println("================");
//        System.out.println(xml);//可以打印出来瞅瞅
//        System.out.println("================");
        try {
            //开始设置模拟请求的参数,额,不一个个介绍了,根据需要拿
            String boundary = "------WebKitFormBoundaryUey8ljRiiZqhZHBu";
            URL u = new URL(url);
            HttpURLConnection conn = (HttpURLConnection) u.openConnection();
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setUseCaches(false);
            conn.setRequestMethod("POST");
            conn.setRequestProperty("connection", "Keep-Alive");
            //这里模拟的是火狐浏览器,具体的可以f12看看请求的user-agent是什么
            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            conn.setRequestProperty("Charsert", "UTF-8");
            //这里的content-type要设置成表单格式,模拟ajax的表单请求
            conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
            // 指定流的大小,当内容达到这个值的时候就把流输出
            conn.setChunkedStreamingMode(10240000);
            //定义输出流,有什么数据要发送的,直接后面append就可以,记得转成byte再append
            OutputStream out = new DataOutputStream(conn.getOutputStream());
            byte[] end_data = ("\r\n--" + boundary + "--\r\n").getBytes();// 定义最后数据分隔线

            S
  • 6
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值