gpt4 book ai didi

java - 如何使用包含换行符和制表符的 ResponseBody 传递详细字符串

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:27:06 25 4
gpt4 key购买 nike

作为 Spring 应用程序的一部分,我正在发回一个很长的字符串作为 Http 响应主体,并且响应字符串包含访问日志行,其中每一行都应该有一个制表符(\t)以及一个新的行符(\n).

每一行都被制作成:
String.format("%s\t%s\n", accessLog.getIpAddress(), accessLog.getDate())

通过 Charles 代理测试 API,两个特殊字符都显示良好。但是,使用 Chrome 浏览器进行测试时,由于某种原因,\t 和\n 都被替换为空格。

另外,我正在使用 Spring @ResponseBody 注释发送这行访问日志。这有什么问题吗?

下面是Controller.java:

@RequestMapping("/get_access_log.do")
@ResponseBody
public String test() throws Exception {
return result = accessLogBO.extractTest();
}

访问日志BO.java:

public String extractTest() throws IOException {

String inputFile = "C:\\Users\\input.txt";
String response = "";


FileReader fr = new FileReader(inputFile);
BufferedReader br = new BufferedReader(fr);
StringBuilder sb = new StringBuilder();
String line = null;
while((line = br.readLine()) != null) {
String formattedLine = format(line);
sb.append(formattedLine);
}
}

br.close();
fr.close();

return sb.toString();
}

private String format(String line) {
AccessLog accessLog = parseAccessLog(line);
return String.format("%s\t%s\n", accessLog.getIpAddress(), accessLog.getDate());
}

错误案例截图:Error case screenshot from Chrome brower

谁能帮我解决这个问题?任何意见将不胜感激!谢谢。

最佳答案

Chrome 将响应解释为 HTML,因为内容类型不是文本/纯文本。

在 RequestMapping 注释中将 text/plain 设置为生成的内容类型应该可以解决这个问题。

关于java - 如何使用包含换行符和制表符的 ResponseBody 传递详细字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36996704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com