Я последовал ответ вО том, как получать и отправлять запрос PUT с Джерси
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.18. Мой вопрос в том, как я могу отправить объект на сервер и как сервер получит этот объект. В настоящее время я использую Jackson для сериализации объекта, но он продолжает показывать мне ошибку 400 – wwood
Если у вас установлен ** POJO_MAPPING **, вам не нужно явно отображать объекты. И вам даже не нужно комментировать класс сообщений. Учитывая ** getBaseURI() ** возвращает правильное значение, оно должно работать. Проверьте свой сервер с помощью завитка или другого клиента с ручным управлением. 400 означает, что у вас есть ошибка в самом HTTP-запросе, а не в json. И я рекомендую Jersey 2.x, поскольку 1.x беспорядочен. Вам не понадобятся все эти баггистые строковые литералы, ответное здание и т. Д. – Dmytro
Под «вам не нужно явно отображать объекты», вы имеете в виду, что мне не нужно использовать Джексона для явного сериализации объекта, но вместо этого отправлять сам объект непосредственно? – wwood