Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java QBit POST方法无法分析纯文本_Java_Rest_Curl - Fatal编程技术网

Java QBit POST方法无法分析纯文本

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

我正在使用Qbit编写一个简单的REST应用程序,在正确解析POST-ed文本时遇到了问题。这差不多,所以我不确定我会错过什么

在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)的一个问题,但是我能够通过用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
来存储
映射,而不是
字符串