Java 登录三方平台 下载PDF文件 sonar pdf下载

需求背景:Java接入sonarqube进行代码检查,代码检查完成需要下载生成的PDF文件,下载入口是我们自己的平台,这就需要登录sonarqube文件流输出到前端直接下载pdf

在这里插入图片描述

代码如下,可直接运行记得帮忙点赞感谢:

浏览器下载PDF:
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
  /**
    @MethodName: toDownload
    @Description: PDF下载
    @Param: [response, sendPostParam]
    @Return: void
    @Author: gjq
    @Date: 2023/5/31
    **/
    public static void toDownload(HttpServletResponse response, SendGetSonarParam sendPostParam ,String pdfName) {
        ServletOutputStream out = null;
        InputStream inputStream = null;
        try {
            // 获取外部文件流
            log.info("下载中------invPdfUrl=" + sendPostParam.getUrl());
            URL url = new URL(sendPostParam.getUrl());
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestProperty(AUTHORIZATION, HttpClinetSonarConfig.getHttpClinetSonarConfig().getHeader());
            conn.setConnectTimeout(3 * 1000);
            //防止屏蔽程序抓取而返回403错误
            conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
            inputStream = conn.getInputStream();
            /**
             * 输出文件到浏览器
             */
            int len = 0;
            // 输出 下载的响应头,如果下载的文件是中文名,文件名需要经过url编码
            response.setContentType("text/html;charset=utf-8");
            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(pdfName.concat(".pdf"), "UTF-8"));
            response.setHeader("Cache-Control", "no-cache");
            out = response.getOutputStream();
            byte[] buffer = new byte[1024];
            while ((len = inputStream.read(buffer)) > 0) {
                out.write(buffer, 0, len);
            }
            out.flush();
            log.info("pdf文件下载完成.....");
        } catch (Exception e) {
            log.error("pdf文件下载异常,e = {}", e);
            e.printStackTrace();
        } finally {
            if (inputStream != null) {
                try {
                    inputStream.close();
                } catch (Exception e) {
                }
            }
            if (out != null) {
                try {
                    out.close();
                } catch (Exception e) {
                }
            }
        }
    }

HttpClinetSonarConfig类

@Component
@Slf4j
public class HttpClinetSonarConfig implements InitializingBean {

    private static HttpClinetSonarConfig httpClinetSonarConfig = null;

    public static HttpClinetSonarConfig getHttpClinetSonarConfig() {
        return httpClinetSonarConfig;
    }

    private final String BASIC = "Basic ";
    /**
     * sonar地址信息
     */
    @Value("${sonar.connect.url}")//在properties配置对应的参数即可
    public String sonarUrl;
    /**
     * 登录密码
     */
    @Value("${sonar.connect.password}")
    public String sonarPassWord;
    /**
     * 用户名信息
     */
    @Value("${sonar.connect.username}")
    public String sonarUserName;

    /**
     * 用户名信息
     */
    @Value("${sonar.pdf.download}")
    public String downloadPDF;


    @Override
    public void afterPropertiesSet() throws Exception {
        httpClinetSonarConfig = this;
        log.info("HttpClinetConfig:{}", this);
    }


    /**
     * 构造Basic Auth认证头信息
     */
    public String getHeader() {
        String auth = sonarUserName.concat(":").concat(sonarPassWord);
        byte[] encodedAuth = Base64.encodeBase64(auth.getBytes(Charset.forName("US-ASCII")));
        String authHeader = BASIC.concat(new String(encodedAuth));
        return authHeader;
    }

    @Override
    public String toString() {
        return JSON.toJSONString(this);
    }
}

SendGetSonarParam类,主要是URL地址,这里做了一个封装方便其他人使用

@Data
public class SendGetSonarParam extends BaseObject {
    /**
     * 请求URL
     */
    private String url;

    /**
     * 请求参数
     */
    private Map<String, String> param;

    /**
     * 请求headers
     */
    private Map<String, String> headers;

    /**
     * requestConfig
     */
    private RequestConfig requestConfig;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Sonar 7.8是一款功能强大的音频录音和混音软件,它提供了许多专业级的工具和功能,可以帮助音频制作人和音乐制作人创建高质量的音频作品。 要下载Sonar 7.8,您可以按照以下步骤进行操作: 1. 打开您的电脑浏览器,并搜索“Sonar 7.8下载”或访问Cakewalk的官方网站。 2. 浏览Cakewalk的官方网站,找到Sonar 7.8的下载页面。 3. 确保您的计算机系统满足Sonar 7.8的系统要求。Sonar 7.8通常需要较高的处理能力和内存要求。 4. 单击下载按钮或链接,开始下载Sonar 7.8安装程序。 5. 选择适合您计算机系统的安装程序版本,可以是32位或64位,然后保存安装程序到您的计算机中。 6. 双击安装程序,按照指示完成Sonar 7.8的安装过程。确保您已经阅读并同意最终用户许可协议。 7. 完成安装后,您可以打开Sonar 7.8,并注册或登录到您的Cakewalk帐户。 8. 接下来,您可以根据您的需求和喜好,开始使用Sonar 7.8进行录音、编辑、混音和制作音频作品。 总之,要下载Sonar 7.8,您可以通过访问Cakewalk的官方网站,下载适合您计算机系统的安装程序,并按照安装指示完成安装过程。一旦安装完成,您就可以开始使用Sonar 7.8来创建高质量的音频作品。 ### 回答2: Sonar 7.8是一款音频编辑和录音软件。如果您想要下载Sonar 7.8,可以按照以下步骤进行操作。 首先,您可以在互联网上搜索Sonar 7.8的下载链接。许多软件下载网站都会提供Sonar 7.8的下载链接,您只需点击链接即可开始下载。 另外,您还可以访问Cakewalk(Sonar的开发公司)的官方网站,查找Sonar 7.8的下载选项。在官方网站上,您可以找到最新的Sonar版本以及其他相关软件和资源。 在下载之前,建议您确保您的计算机系统满足Sonar 7.8的最低系统要求。这包括操作系统版本、处理器速度、内存容量等。如果您的计算机不满足要求,可能无法正常安装和运行Sonar 7.8。 当您找到适合的下载链接后,点击下载按钮即可开始下载Sonar 7.8的安装文件下载的速度将取决于您的网络连接。 一旦下载完成,您可以找到安装文件并双击打开它。跟随安装向导的指示,选择适当的安装选项和目录。一般而言,您可以选择默认安装设置,但也可以根据自己的需求进行自定义设置。 安装完成后,您可以在计算机上找到Sonar 7.8的快捷方式或图标。双击打开软件,开始使用Sonar 7.8进行音频编辑和录音。 总之,通过搜索下载链接、访问官方网站并遵循安装向导的指示,您可以轻松地下载和安装Sonar 7.8。希望这些步骤对您有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值