如何在Spring restful webservice中获取在请求正文中发送的字符串?

时间:2014-08-08 11:13:42

标签: java spring web-services rest

我有一个spring web服务方法,我希望得到一个字符串作为参数。字符串在请求的正文中发送。我的Web服务类是:

@Controller
@RequestMapping(value = "/users/{uid}/openchart")
public class OpenChartWebService {

    @RequestMapping(method = RequestMethod.POST)
    @ResponseBody
    public String saveABC(@PathVariable("uid") Long uid, 
            @RequestBody String myString) {
            System.out.println("sent string is: "+myString);
            return "something";
    }
}

我的身体要求是:

   {
      "name":"Ramesh"
    }

但这不起作用。这显示了"错误请求" HTTP错误(400)。如何在正文中发送字符串以及如何在webservice方法中获取在主体中发送的字符串?

1 个答案:

答案 0 :(得分:0)

正如@Leon建议的那样,您应该将媒体类型添加到您的请求映射中,但也要确保您的类路径中有Jackson。您还希望将@RequestBody参数类型更改为具有" name"属性,而不仅仅是一个字符串,以便你不必在之后转换它。

public class Person {
    private name;

    public getName() {
        return name;
    }
}

如果您的数据对象如上所示,那么您可以将@RequestBody参数设置为Person类型。

如果你想要的只是一个字符串,那么也许只需要传递" name"的值。在您的请求正文中而不是具有名称属性的对象。