python - 如何在发送到 Spring Boot 休息 Controller 的请求正文中保留换行符

标签 python spring-boot http post line-breaks

我很困惑。

我正在通过 Http Post 请求向 Spring Boot 休息 Controller 发送一个字符串。

该字符串包含由“\n”表示的换行符。

Controller 使用“纯文本/文本”。

客户端是一个 python 程序,它从一个 json 对象的字段中读取字符串,该对象是从文本文件中读取的。

文本文件中的 json 对象如下所示:
{"content": "多\n 行\n 字符串"}

但是,如果新行字符到达其余 Controller ,则会将它们转义为 '\\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”而不是
“新的
线
字符串”。

但是,如果我像这样通过 postman 发送字符串,则新行在到达 Controller 的字符串中被正确解释为 '\r\n' (设置了文本/普通标题):

Post via Postman

所以我的具体问题是,如何将我从 json 字段中读取的字符串从 python 发送到其余 Controller ,以便 java/spring-boot 不会转义 '\n' 字符,而是将其解释为换行符。
有没有办法从python正确发送字符串(首选方式),或者我必须在spring服务器端做一些转换/编码?

如果我必须在 spring 服务器端进行转换/编码,如何确保如果我用我的 python 客户端发布到我无法控制的服务器,新行字符的解释是否正确?
是否有任何标准或依赖于服务器端自定义转换/编码的标准?

Controller 看起来像这样:
@RestController
class SmoeController {

    @PostMapping("/some-endpoint",  consumes = "text/plain", produces = 
                 "text/plain")
    String newEmployee(@RequestBody String text) {
        System.out.println(text);
        return text;
    }

最佳答案

试试这个 String[] lines = payload.split("\r\n");

关于python - 如何在发送到 Spring Boot 休息 Controller 的请求正文中保留换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55648352/

相关文章:

spring-boot - Spring Data Rest 中的字段安全性

sql-server - 通过HTTP GET读取TSQL中的二进制数据

javascript - 是否减少 HTTP 请求?

python - 如何在python中找到文件或目录的所有者

python - 在python 3中制作 'byte type object'

python - 将 'th' 格式的日期转换为日期时间以进行日期比较?

java - RabbitMQ JAVA Spring 配置 - spring.rabbitmq.ssl.key-store

python - 除非分隔符后跟特定模式,否则如何在分隔符处拆分字符串?

java - Spring Core如何使用Spring AOP?

http - 往返时间 Http on non persistent, persistent, persistent with pipelining