You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Apache HttpConnection通过PUT请求上传文件至Swagger服务器遇内部错误

排查Apache HttpConnection PUT上传文件返回500 Internal Server Error的问题

从你给出的信息来看,最可能的问题点集中在URL参数格式错误、请求头缺失/配置错误或者请求体处理不当这几个方面,我给你逐一分析并给出修复建议:

1. 优先修复URL中的参数分隔符错误

你当前URL里用了&来分隔参数,这是HTML的转义字符,但在Java字符串中直接使用会导致服务器无法正确解析参数(服务器会把amp;sourceSystem当成一个错误的参数名),这大概率是触发500错误的核心原因!

把URL里的&全部替换成&:

String url = "http://xxx.xxx.xx.xx:XXXX/warehouse-ui/api/v2/external-file/IMPORT_RATIO?businessUnit=MBA&sourceSystem=AVALOQ_MBA&effectiveFrom=2011-12-21&effectiveTo=MAX&threshold=WARNING";

2. 检查并完善请求头配置

认证头是否正确设置

你已经做了Base64编码,但要确保Authorization头的格式是Basic [编码后的字符串],并且usrPassPair是username:password的格式(无多余空格):

connection.setRequestProperty("Authorization", "Basic " + encoding);

必要的Content-Type和其他头

根据Swagger接口的定义,上传文本文件通常需要指定Content-Type,如果是直接上传文本内容,设置为text/plain;如果接口要求以文件形式上传(比如multipart),则需要对应调整。另外记得开启输出模式:

connection.setDoOutput(true);
connection.setRequestMethod("PUT");
// 根据接口要求设置Content-Type,示例为文本文件
connection.setRequestProperty("Content-Type", "text/plain");
// 可选:设置Accept头匹配接口返回格式
connection.setRequestProperty("Accept", "application/json");

3. 确保请求体(文件流)正确写入

你的代码里InputStream部分没写完,这里给你一个标准的文件流写入示例,确保文件内容正确传递给服务器:

File textFile = new File("path/to/your/file.txt");
try (InputStream inputStream = new FileInputStream(textFile);
     OutputStream outputStream = connection.getOutputStream()) {
    byte[] buffer = new byte[4096];
    int bytesRead;
    while ((bytesRead = inputStream.read(buffer)) != -1) {
        outputStream.write(buffer, 0, bytesRead);
    }
    outputStream.flush();
} catch (IOException e) {
    e.printStackTrace();
}

4. 额外排查点

  • 检查URL中的参数值是否符合服务器要求:比如effectiveTo=MAX,服务器是否接受这个特殊值?可以尝试替换为一个合法的日期字符串(比如2099-12-31)测试是否能成功。
  • 如果能获取服务器端日志,直接查看日志里的具体错误栈,这是定位500问题最直接的方式(比如参数校验失败、文件解析异常等)。

按照这些步骤调整后,应该能解决大部分常见的500错误问题。

内容的提问来源于stack exchange,提问作者sylikon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:42:36