我很困惑。
我通过Http Post请求向Spring Boot rest控制器发送一个字符串。
该字符串包含由'\n‘表示的换行符。
控制器使用‘普通/文本’。
客户端是一个python程序员,它从从文本文件读取的json对象的字段中读取字符串。
文本文件中的json对象如下:{"content":"Multi \n line \n string"}
但是,如果新行字符到达rest控制器'\n‘,则会对它们进行转义,以便它们作为字符串的一部分显示为正常的'\n’。
我试图从python发送一个字符串,但它不是从文本文件中读取的。取而代之的是,我在一个变量中使用换行符直接提供字符串:
payload = "new \n line \n string"
headers = {'content-type': 'text/plain'}
r = requests.post(url, data=payload, headers=headers)但是' \n‘被转义为' \n’,这使得它成为字符串的正常部分,显示为"new \n line \n string“而不是"new line string”。
但是如果我像这样通过Postman发送字符串,新行将被正确地解释为到达控制器的字符串中的'\r\n‘(设置了文本/普通报头):

所以我的具体问题是,如何将我从python的json字段中读取的字符串发送到rest控制器,以便java/spring-boot不会转义'\n‘字符,而是将其解释为换行符。有没有办法从python中正确地发送字符串(最好是这样),或者让我在spring服务器端做一些转换/编码?
如果我必须在spring服务器端进行转换/编码,如何确保在我无法控制的服务器上使用python客户端进行post时,能够正确地解释换行符?有没有一些标准的或依赖于服务器端的自定义转换/编码?
控制器看起来像这样:
@RestController
class SmoeController {
@PostMapping("/some-endpoint", consumes = "text/plain", produces =
"text/plain")
String newEmployee(@RequestBody String text) {
System.out.println(text);
return text;
}发布于 2019-12-18 05:24:49
尝试此String[] = payload.split("\r\n");
https://stackoverflow.com/questions/55648352
复制相似问题