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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据引用\[1\]中提到的错误信息"java.io.IOException: Server returned HTTP response code: 400 for URL",这个错误通常表示在与服务器进行通信时发生了问题。HTTP响应代码400表示请求无效,可能是由于请求的URL不正确或请求参数不正确导致的。 根据引用\[2\]中提供的正确的URL示例"https://open.douyin.com/item/comment/list/?open_id=URLEncoder.encode("@8hhauTCnM4ltGM780mDqPP","utf-8")",可以看出正确的URL应该是经过编码的,并且参数应该正确传递。 根据引用\[3\]中提供的代码示例,可以看出在使用org.apache.commons.io.FileUtils进行文件下载时,需要确保URL的正确性,并且需要处理可能的异常情况。 综上所述,根据提供的错误信息"Server returned HTTP response code: 400 for URL: https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi",可能是由于请求的URL不正确或请求参数不正确导致的。您可以检查URL是否正确,并确保请求参数的正确传递。如果问题仍然存在,您可以尝试使用异常处理来捕获可能的异常情况。 #### 引用[.reference_title] - *1* *3* [java.io.IOException: Server returned HTTP response code: 400 for URL 问题定位与解决](https://blog.csdn.net/LS7011846/article/details/84074946)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [java.io.IOException: Server returned HTTP response code: 400 for URL: https://open.douyin.com/](https://blog.csdn.net/weixin_43852094/article/details/115181233)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值