我发送一个非常长的String作为Http响应体作为Spring应用程序的一部分,响应String包含访问日志行,其中每行应该有一个制表符(\ 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();
}
AccessLogBO.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
任何人都可以帮我解决这个问题吗?任何评论都会非常感激!谢谢。
答案 0 :(得分:0)
Chrome将响应解释为HTML,因为内容类型不是text / plain。
在RequestMapping注释中将text / plain设置为生成的内容类型应解决问题。