这是我的 curl 方法请求映射到失败并显示 400 的 POJO:
卷曲请求:
curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"key":"XYZ","uniqueId":"ABCD"}' http://localhost:8080/api/rest/connect/tick/view.json
* Adding handle: conn: 0x1cb54c0
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0x1cb54c0) send_pipe: 1, recv_pipe: 0
* About to connect() to localhost port 8080 (#0)
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 8080 (#0)
> POST /api/rest/connect/tick/view.json HTTP/1.1
> User-Agent: curl/7.32.0
> Host: localhost:8080
> Accept: application/json
> Content-type: application/json
> Content-Length: 53
>
* upload completely sent off: 53 out of 53 bytes
< HTTP/1.1 400 Bad Request
* Server Apache-Coyote/1.1 is not blacklisted
< Server: Apache-Coyote/1.1
< Content-Type: text/html;charset=utf-8
< Content-Length: 971
< Date: Thu, 19 Sep 2013 13:16:29 GMT
< Connection: close
应用程序配置.XML:
<context:annotation-config/>
<mvc:annotation-driven/>
followed by, Bean Definitions
控制器类:
@RequestMapping(value="/tick/view.*", method = RequestMethod.POST, consumes=MediaType.APPLICATION_JSON_VALUE, produces=MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public IConnectResponse tickConnectPost(@RequestBody final ConnectServiceBean connectServiceBean) {
连接服务豆:
import java.io.Serializable;
public class ConnectServiceBean implements Serializable {
private static final long serialVersionUID = 1L;
private String key;
private String uniqueId;
//Getters and setters }
但是正在为另一个方法请求映射到字符串:
curl -i -H "Content-Type: application/json" -X POST -d '{"JKL@user.com"}' http://localhost:8080/api/rest/connect/tick/XYZ/view.json
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Pragma: no-cache
Cache-Control: no-cache, no-store, max-age=0
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Type: application/json;charset=UTF-8
Content-Language: en-GB
Transfer-Encoding: chunked
Date: Thu, 19 Sep 2013 13:11:40 GMT
控制器:
@RequestMapping(value="/tick/{key}/view.*", method = RequestMethod.POST, consumes="application/json", produces = "application/json; charset=utf-8")
public IConnectResponse tickConnectPostString (
@PathVariable("key") String key, @RequestBody String uniqueId
) {}
我觉得杰克逊映射有问题。但我也有所有必要的 POM 依赖项,我也在其他一些 stackoverflow 帖子中读到,我只需要用于 bean 映射的杰克逊配置(虽然不确定) org.codehaus.jackson jackson-core-asl 1.9.7
org.codehaus.jackson jackson -mapper-asl 1.9.7