Http请求带授权的图片文件

博客展示了Java代码实现下载PDF文件的功能,通过传入文件路径,利用HttpGet请求获取文件。同时还包含将InputStream转换为Base64字符串的方法,在读取文件流时进行异常处理,最终返回Base64编码后的字符串。
 **private final static String AUTH = "078c8b137f67b39b314c0c36cb34a4e6";**

/**
* 下载PDF文件
*
* @param path 文件路径
* @return 字节数
*/
public String downLoadGet(String path) {
BufferedReader bufferedReader = null;
try {
String downFilesWS = qConfigHelper.getDownFilesWS();
String realPath = downFilesWS + “/files” + path;
logger.info(“电子发票文件地址:{}”, realPath);
HttpGet request = new HttpGet(realPath);
request.setHeader(“Authorization”, "Basic " + AUTH);
HttpResponse response = HttpClients.createDefault().execute(request);

        if (response.getStatusLine().getStatusCode() != 200) {
            logger.warn("下载文件出错:{}", response.getStatusLine().getStatusCode());
            return null;
        }

        if (response.getEntity().getContent() == null) {
            logger.warn("下载文件出错:response.getEntity().getContent() 为空");
            return null;
        }
        InputStream inputStream = response.getEntity().getContent();
        return getBase64FromInputStream(inputStream);

    } catch (Exception e) {
        logger.error("下载pdf文件时异常", e);
        throw new BizException("下载pdf文件时异常", e);
    } finally {
        try {
            if (bufferedReader != null) {
                bufferedReader.close();
            }
        } catch (IOException e) {
            logger.warn("流关闭异常", e);
        }
    }
}

/**
* InputStream 转Base64
*
* @param in 文件流
* @return Base64字符串
*/
private String getBase64FromInputStream(InputStream in) {
byte[] data = null;
// 读取图片字节数组
try {
ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
byte[] buff = new byte[100];
int rc = 0;
while ((rc = in.read(buff, 0, 100)) > 0) {
swapStream.write(buff, 0, rc);
}
data = swapStream.toByteArray();
} catch (IOException e) {
logger.warn(“转换出错”, e);
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
logger.warn(“转换出错”, e);
}
}
}
return new String(Base64.encodeBase64(data));
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值