Java QBit POST方法无法分析纯文本
我正在使用Qbit编写一个简单的REST应用程序,在正确解析POST-ed文本时遇到了问题。这差不多,所以我不确定我会错过什么 在SimpleService.java中Java QBit POST方法无法分析纯文本,java,rest,curl,Java,Rest,Curl,我正在使用Qbit编写一个简单的REST应用程序,在正确解析POST-ed文本时遇到了问题。这差不多,所以我不确定我会错过什么 在SimpleService.java中 @RequestMapping(value = "/body/string", method = RequestMethod.POST) public boolean bodyPostString(String body) { return body.equals("foo"); } ... public stati
@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)的一个问题,但是我能够通过用JSON包装我的文章正文并使用(我假设)解析它来解决这个问题,因为所有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
,这可能是我使用的QBit版本(0.9.3)的问题,但是我可以通过用JSON包装我的帖子正文并使用(我假设)对其进行解析来解决这个问题因为所有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
来存储映射,而不是字符串