gpt4 book ai didi

java - QBit POST 方法无法解析明文

转载 作者:太空宇宙 更新时间:2023-11-04 12:47:05 24 4
gpt4 key购买 nike

我正在使用 Qbit 编写一个简单的 REST 应用程序,但无法正确解析 POST 文本。这几乎是straight out of a tutorial ,所以我不确定我可能会错过什么

在 SimpleService.java

@RequestMapping(value = "/body/string", method = RequestMethod.POST)
public boolean bodyPostString(String body) {
return body.equals("foo");
}

...

public static void main(final String... args) {

final ServiceEndpointServer serviceServer = EndpointServerBuilder
.endpointServerBuilder()
.setUri("/")
.build();
serviceServer.initServices(
new SimpleService());
serviceServer.startServer();

在终端

 curl -X POST -H "Content-Type: text/plain" -d 'foo' http://localhost:8080/service/body/string

回应

["Unable to JSON parse body :: false not parsed properly\n\nThe current character read is 'f' with an int value of 102\nfalse not parsed properly\nline number 1\nindex number 0\nfoo\n^"]

最佳答案

这可能是我正在使用的 QBit 版本 (0.9.3) 的问题,但是我可以通过将我的 POST 正文包装在 JSON 中并使用 advantageous boon 解析它来解决该问题。 (我假设)因为所有 JSON 都是由 QBit 处理的。

在新类 SimpleJSONWrapper 中:

import java.util.Map;

public class SimpleJSONWrapper {

public final String payload;

public SimpleJSONWrapper(final String payload) {
this.payload = payload;
}

public String getPayload() {
return payload;
}
}

原来的bodyPostString方法变成:

@RequestMapping(value = "/body/string", method = RequestMethod.POST)
public boolean bodyPostString(SimpleJSONWrapper body) {
return body.getPayload().equals("foo");
}

现在将您的请求发送为:

curl -X POST -H "Content-Type: text/plain" -d '{\"payload\":\"foo\"}' http://localhost:8080/service/body/string

请注意,如果您将嵌套 JSON 作为负载,则需要 SimpleJSONWrapper存储 Map<String, Object> ,不是 String

关于java - QBit POST 方法无法解析明文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36205581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com