Server returned HTTP response code: 400 for URL

springBoot资源下载pdf中。返回400问题。

因为在拼接的url中是存在中文的。但是多个接口都没有报错。下载pdf的时候报错了。没有考虑中文的问题。尝试了

URLEncoder.encode

整段转成编码发现在浏览器中是无法正常打开的。但是只要把URL中的字转化成编码就可以正常打开了

http://127.0.0.1:8080/profile/avatar/2024/05/04/加油-张三-发票-0120-238_20240504100948A001.pdf

这里中间的汉字影响了下载。

/**
  * 中文转化成 Encoder 编码
  */
 private String chineseReplace(String urlString ){

  // 使用正则表达式匹配中文字符
  Pattern pattern = Pattern.compile("[\\u4e00-\\u9fa5]"); // 中文字符范围
  Matcher matcher = pattern.matcher(urlString);

  // 逐个字符替换为 URL 编码格式
  StringBuffer sb = new StringBuffer();
  while (matcher.find()) {
   String chineseChar = matcher.group(); // 匹配到的中文字符
   try {
    String encodedChar = URLEncoder.encode(chineseChar, "UTF-8"); // 中文字符转换为 URL 编码格式
    matcher.appendReplacement(sb, encodedChar); // 替换为 URL 编码格式
   } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
   }
  }
  matcher.appendTail(sb);

  // 输出替换后的 URL 字符串
  String encodedUrlString = sb.toString();
  return encodedUrlString;
 }

使用了正则匹配。去匹配里面中间的汉字。在把中间的汉字单独转化成编码就能正常下载了。

http://127.0.0.1:8080/profile/avatar/2024/05/04/%E5%8A%A0%E6%B2%B9-%E8%82%96%E4%B8%9C%E5%B1%B1-0120-238_20240504100948A001.pdf

转化后的数据之后就能在浏览器正常打开。并且springBoot资源也能正常下载了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值