2015-04-02 87 views
0

我有一个REST API接受在POST一个字符串,返回一个对象,POST字符串中获取400错误的请求Spring MVC中

这是方法:

@RequestMapping(method = RequestMethod.POST, value = "/aValue", headers = "Accept=application/json") 
public @ResponseBody 
MyObject getMyObject(@RequestBody String string) { 

    MyObject response = myService.getMyObject(string); 
    return response; 
} 

现在,当我打电话例如从另一个服务的API,如果我这样做POST这样它给了我总是400错误的请求:

List<Object> providers = new ArrayList<Object>(); 
    providers.add(jsonProvider); 

    WebClient client = WebClient.create(baseUrl + myAPI, providers); 

    client.type(MediaType.APPLICATION_JSON); 
    client.accept(MediaType.APPLICATION_JSON); 

    MyObject response = client.post(userId, MyObject.class); 

    return response; 

,而不是我用它工作的解决方案,这是一个:

MyObject response = client.post("\"" + userId + "\"", MyObject.class); 

有人可以帮我吗?谢谢你们

回答

0

你有一个问题,因为你发布的内容不是有效的JSON,但你指出它在你的客户端代码。你似乎通过只是一个简单的字符串属性用户id你可以简单地改变你的映射加入consumes = "text/plain"接受纯文本,

@RequestMapping(method = RequestMethod.POST, value = "/aValue", headers = "Accept=application/json", consumes = "text/plain") 
public @ResponseBody 
MyObject getMyObject(@RequestBody String string) { 

,让您的客户端发送纯文本,所以

client.type(MediaType.TEXT_PLAIN); 
+0

消耗是不可用的,因为我们使用的是spring 3.0.7.RELEASE ...并且据我所知我们cannpot升级版本 – alessioarsuffi 2015-04-02 09:04:26

+0

尝试省略它,正确设置的内容类型应该足够 – 2015-04-02 09:05:58