通过httpclient发送请求的几种方式,发送文件、参数、json对象

使用工具:idea

框架:gradle、springboot

实现目标:使用 httpclient 发送文件/参数/json对象

method:post

主要用到的jar包:

    compile group: 'net.sf.json-lib', name: 'json-lib', version: '2.4', classifier: 'jdk15'

    //httpclient
    // https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient
    compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.3'
    // https://mvnrepository.com/artifact/org.apache.httpcomponents/httpmime
    compile group: 'org.apache.httpcomponents', name: 'httpmime', version: '4.5.3'
    // https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore
    compile group: 'org.apache.httpcomponents', name: 'httpcore', version: '4.4.6'

花了大半天终于写完这个测试类,能正常跑起来,下面主要贴出来两种 httpclient 的发送和接收,基本够用

特别注意:

  1. 文件和json对象是不能一起发送的,要发也是把json对象toString一下,见第一个方法
  2. 发送json对象,并用Requestbody接收,这种智能发对象,不能发文件,见第二个方法

预备几个方法,因为模拟数据用到的一样,所以先贴这几个公用方法:


    //模拟文件数据,这里自己改成自己的文件就可以了
    private static List> getFileList() {
        //文件列表,搞了三个本地文件
        List> fileList = new ArrayList<>();
        Map filedetail1 = new HashMap<>();
        filedetail1.put("location", "F:\\me\\photos\\动漫\\3ba39425fec1965f4d088d2f.bmp");
        filedetail1.put("fileName", "图片1");
        fileList.add(filedetail1);
        Map filedetail2 = new HashMap<>();
        filedetail2.put("location", "F:\\me\\photos\\动漫\\09b3970fd3f5cc65b1351da4.bmp");
        filedetail2.put("fileName", "图片2");
        fileList.add(filedetail2);
        Map filedetail3 = new HashMap<>();
        filedetail3.put("location", "F:\\me\\photos\\动漫\\89ff57d93cd1b72cd0164ec9.bmp");
        filedetail3.put("fileName", "图片3");
        fileList.add(filedetail3);
        return fileList;
    }

    //模拟json对象数据
    private static JSONObject getJsonObj() {
        /**
         * 这里搞json对象方法很多
         * 1.直接字符串贴过来,然后解析成json
         * 2.用map,做好数据之后解析成json,.toJSONString
         * 3.new 一个JSONObject对象,然后自己拼接
         * 下面的例子用map好了,这个应该通俗易懂
         */
        Map main = new HashMap<>();
        main.put("token", "httpclient with file stringParam jsonParam and jasonArrayParam");
        List> contentList = new ArrayList<>();
        for (int i = 0; i < 4; i++) {
            Map content = new HashMap<>();
            content.put("id", i);
            content.put

你可能感兴趣的:(模拟http请求,java模拟请求,发送文件,发送json对象,接收)