读取 nginx 服务的 CSV 文件时出错

Error reading CSV served by nginx

我正在使用 com.opencsv.CSVReader 从我的 nginx Web 服务器服务的 URL 读取 CSV。 CSV文件内容就是这样:

0.999,1.399,1.799,2.199,2.599,2.999,3.399,3.799,4.199,4.599,4.999,5.399

问题是,当我读取文件时,我没有得到任何 csv 值:

try (InputStreamReader in = new InputStreamReader(new URL(...csv).openStream(), "UTF-8"); CSVReader r = new CSVReader(in)) {

  List<String[]> csv = r.readAll();
  ....

到此之后,csv已经取不到数据了(但是没有报错),csv.get(0).length错误的是1,一个空字符串。我不知道为什么。我为隔离问题所做的测试:

这就是为什么我也在考虑这可能是一个 nginx 问题,因为我最近也遇到了文件未完成下载的错误,我不得不将我之前工作正常的 keepalive_timeout 65 更改为 keepalive_timeout 0。不知道为什么突然就这样了。

这很难调试,但解决方案是重新安装 nginx,因为我的副本已损坏。我的 nginx 实例正在发送额外的 \r 个字符,这些字符不会干扰 curl 或类似的但会中断 Java 实现。

顺便说一句 - 这可能突出了 .openStream() 实现中的一个错误。