首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在发送到Spring Boot rest控制器请求体中保留换行符

问如何在发送到Spring Boot rest控制器请求体中保留换行符
EN

Stack Overflow用户
提问于 2019-04-12 17:19:01
回答 1查看 2.9K关注 0票数 7

我很困惑。

我通过Http Post请求向Spring Boot rest控制器发送一个字符串。

该字符串包含由'\n‘表示的换行符。

控制器使用‘普通/文本’。

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

文本文件中的json对象如下:{"content":"Multi \n line \n string"}

但是,如果新行字符到达rest控制器'\n‘,则会对它们进行转义,以便它们作为字符串的一部分显示为正常的'\n’。

我试图从python发送一个字符串,但它不是从文本文件中读取的。取而代之的是,我在一个变量中使用换行符直接提供字符串:

代码语言:javascript
复制
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时,能够正确地解释换行符?有没有一些标准的或依赖于服务器端的自定义转换/编码?

控制器看起来像这样:

代码语言:javascript
复制
@RestController
class SmoeController {

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

回答 1

Stack Overflow用户

发布于 2019-12-18 05:24:49

尝试此String[] = payload.split("\r\n");

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55648352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档