前言
描述:本文主要是记录后端代码根据url获取文件时发生报错的解决方案
一、遇到的报错
java
Serverreturned HTTPresponse code: 400 for URL
分析:由于我上传的Excel文件中存在空格符,导致代码在获取文件时发生报错
1、项目初始代码
java
public Workbook generateExcelObject(String fileUrl) {
try {
// 获取文件数据
URL url = new URL(fileUrl);
InputStream inputStream = url.openStream();
if (!(inputStream.markSupported())) {
inputStream = new PushbackInputStream(inputStream, 8);
}
// 生成excel对象
Workbook book = WorkbookFactory.create(inputStream);
return book;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
二、解决方案
1、直接替换
java
URL url = new URL(fileUrl.replace(" ", "%20"));
2、使用 URLEncoder.encode
java
// 对文件链接中的空格进行URL编码处理
String encodedUrl = URLEncoder.encode(fileUrl, "UTF-8");
总结
实际测下来,方法1 可以成功,方法2不行,依然会在 InputStream inputStream = url.openStream();
发生报错。原因是方法2把//也转为字符了,然后报错没有协议