关于如何发送和接收泽西岛的PUT请求

时间:2014-10-31 15:46:57

标签: java json rest jersey

我按照

中的回答

Post/Put/Delete http Json with additional parameters in Jersey + general design issues

但我继续得400 Bad Request ......知道如何解决这个问题吗?

以下是我对泽西休息服务器所拥有的内容:

@PUT
@Path("/insertmessage")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.TEXT_PLAIN })
public Response insertMessage(Message m) {
    return Response.ok(m.toString(), MediaType.TEXT_PLAIN).build();
}

这是我对客户的所作所为:

ClientConfig config = new DefaultClientConfig();
config.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
Client client = Client.create(config);
WebResource service = client.resource(getBaseURI());
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(new Message("a", "b", "message"));
System.out.print(service.path("insertmessage")
       .type(MediaType.APPLICATION_JSON).put(String.class, json));

以下是消息的构造函数:

@JsonCreator
public Message(@JsonProperty("sender") String sender,
               @JsonProperty("receiver") String receiver,
               @JsonProperty("content") String content) {
    this.sender = sender;
    this.receiver = receiver;
    this.content = content;
}

我有:

<init-param>
     <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
     <param-value>true</param-value>
</init-param>

在我的web.xml中

1 个答案:

答案 0 :(得分:0)

如果您使用Jersey 2.x,您可以使用proxy-client,这样您就可以像在本地课程一样调用服务 至于你的代码,还不清楚什么是控制器注释和路径。我在谈论这部分路径(&#34;休息&#34;)