项目之间的接口调用

项目之间的接口调用

1.需求

	现有两个java jfinal 项目,项目1和项目2,现通过项目1调用项目2接口获得项目2传入的图片文件,调用接口有两个参数,一个string类型fileName,一个int类型type

2.maven依赖

<!-- Apache HttpClient -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
            <version>4.5.13</version>
        </dependency>

3.实现

项目1:
上传接口

/**
     * 上传
     */
    public void upload() throws Exception {
        System.out.println("getPara(\"str\") = " + getPara("str"));
        System.out.println("str = " + AesUtil.decrypt(getPara("str")));
        VersionVo vo = ValidationUtil.convert(AesUtil.decrypt(getPara("str")), VersionVo.class);
        Integer type = vo.getType();
        final List<UploadFile> file = getFiles();
        AssertUtil.isTrue(file == null, "上传文件为空");
        AssertUtil.isTrue(type == null, "文件类型不能为空");
        StringBuilder fileName = new StringBuilder("");
        for (UploadFile uploadFile : file) {
            String s = uploadToProject("appFiringGuide/upload",uploadFile.getFile(),type);
            if (fileName.length() == 0){
                fileName.append(s);
            }else {
                fileName.append("," + s);
            }
        }
        renderJson(Result.success(fileName.toString(), "文件上传成功"));
    }

调用项目2接口

/**
     * 调用数据中心上传图片
     * @param method
     * @param file
     * @param type
     * @return
     */
    private String uploadToProject(String method,File file,Integer type){
        String newFileName = "";
        // 项目2的URL
        String project2Url = Constant.ENAVMSI_DATACENTER_URL + "/" + method + "?type=" + type;

        // 创建HTTP客户端
        CloseableHttpClient httpClient = HttpClients.createDefault();

        // 创建POST请求
        HttpPost httpPost = new HttpPost(project2Url);

        // 创建文件实体
        FileBody fileBody = new FileBody(file, ContentType.DEFAULT_BINARY);

        // 创建参数实体
        HttpEntity entity = MultipartEntityBuilder.create()
                .addPart("file", fileBody)
                .addPart("type", new StringBody(String.valueOf(type), ContentType.TEXT_PLAIN))
                .build();

        // 设置请求实体
        httpPost.setEntity(entity);

        try {
            // 发送请求并获取响应
            HttpResponse response0 = httpClient.execute(httpPost);

            // 处理响应...
            StatusLine statusLine = response0.getStatusLine();
            int statusCode = statusLine.getStatusCode();
            HttpEntity httpEntity = response0.getEntity();

            if (httpEntity != null && statusCode == 200) {
                // 使用 InputStream 或其他方法读取响应体数据
                InputStream inputStream = httpEntity.getContent();

                // 处理响应体数据...
                BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
                String line;
                StringBuilder responseStringBuilder = new StringBuilder();
                while ((line = reader.readLine()) != null) {
                    responseStringBuilder.append(line);
                }
                reader.close();
                inputStream.close();

                // 输出响应结果
                System.out.println("Response: " + responseStringBuilder.toString());

                JSONObject jsonObject = JSONObject.parseObject(responseStringBuilder.toString());
                newFileName = jsonObject.getString("data");
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                // 关闭HTTP连接
                httpClient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return newFileName;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值