Mav*_*ode 7 python post http line-breaks spring-boot
我很困惑。
我正在通过 Http Post 请求向 Spring Boot 休息控制器发送一个字符串。
该字符串包含由“\n”表示的换行符。
控制器使用“纯文本/文本”。
客户端是一个 python 程序,它从一个 json 对象的字段中读取字符串,该对象是从文本文件中读取的。
文本文件中的 json 对象如下所示: {"content": "Multi \n line \n string"}
但是,如果新行字符到达其余控制器,则会将它们转义为 '\\n',以便它们将显示为正常的 '\n' 作为字符串的一部分。
我试图从 python 发送一个不是从文本文件中读取的字符串。相反,我直接在带有换行符的变量中提供字符串:
payload = "new \n line \n string"
headers = {'content-type': 'text/plain'}
r = requests.post(url, data=payload, headers=headers)
Run Code Online (Sandbox Code Playgroud)
但是 '\n' 被转义为 '\\n' 这使得它成为字符串的正常部分,显示为“new \n line \n string”而不是“new line string”。
但是,如果我像这样通过邮递员发送字符串,则新行在到达控制器的字符串中被正确解释为 '\r\n' (设置了文本/纯标题):
所以我的具体问题是,如何将我从 json 字段中读取的字符串从 python 发送到 rest 控制器,以便 java/spring-boot 不会转义 '\n' 字符,而是将其解释为换行符。有没有办法从python正确发送字符串(首选方式),或者我必须在spring服务器端做一些转换/编码?
如果我必须在 spring 服务器端进行转换/编码,如何确保如果我用我的 python 客户端发布到我无法控制的服务器,新行字符的解释是否正确?是否有任何标准或依赖于服务器端自定义转换/编码的标准?
控制器看起来像这样:
@RestController
class SmoeController {
@PostMapping("/some-endpoint", consumes = "text/plain", produces =
"text/plain")
String newEmployee(@RequestBody String text) {
System.out.println(text);
return text;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2540 次 |
| 最近记录: |