Ошибка HTTP 400 в веб-службе REST во время POST с FormParam, содержащей собственные объекты (например, enities)
Для оформления заказа в моем REST-сервисе я должен отправить список "статьи» от клиента к серверу. Эти объекты статьи имеют самодельный тип сущности. Я уже обнаружил, что отправка списка объектов STRING или INTEGER работает, отправка его через @FormParam.
Но как только я пытаюсь отправить список своих собственных объектов (даже только ОДНОГО объекта), я всегда получаюОшибка HTTP 400 "Плохой запрос ".
Я попытался точно такой же код, как показано ниже (только параметры form.add () и параметры метода сервера были изменены) и успешно постет строки, целые числа и списки строк. Это только создает проблемы при отправке собственных типов объектов.
Регистрация сказала мне, что метод сервера нет достиг. Процесс где-то сломан раньше.
Я также пытался получить запрос с помощью прокси (Apache JMeter). Здесь сказано, что параметрkunde
содержит значениеentities.Kunde%40af8358
, Таким образом, я предполагаю, что объект не сериализован полностью (или вообще). Но отправка такого объекта от сервера клиенту в ответе работает нормально - здесь XML-сериализация не проблема.
В чем может быть причина? Возможно, НЕ возможно отправить собственные типы через POST?
(PS: типKunde
в моем примере сериализуем и аннотирован@XmlRootElement
.)
Заранее спасибо за вашу помощь!
Jana
Заметка: Ям с использованием SAP Netweaver AS. Но до сих пор он вел себя как любая другая Java AS, поэтому я неНе думаю, что это будет причиной. Любая другая операция REST работает, даже POST без собственных сущностей.
прибавление: Ям с использованием библиотеки JERSEY.
Мой код на стороне сервера:
@Path("/test")
@POST
@Produces(MediaType.TEXT_XML)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public String test(
@FormParam("kunde") Kunde kunde) {
return "The name of the customer is: "
+kunde.getVorname()+" "+kunde.getNachname();
}
Мой код на стороне клиента (метод в Session Bean):
public String test() {
Kunde kunde = new Kunde();
kunde.setNachname("Müller");
kunde.setVorname("Kurt");
Form form = new Form();
form.add("kunde", kunde);
return service
.path("test")
.type(MediaType.APPLICATION_FORM_URLENCODED)
.accept(MediaType.TEXT_XML)
.post(String.class, form);
}
гдеоказание услуг построен так:
com.sun.jersey.api.client.Client;
com.sun.jersey.api.client.WebResource;
com.sun.jersey.api.client.config.ClientConfig;
com.sun.jersey.api.client.config.DefaultClientConfig;
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
service = client.resource(UriBuilder.fromUri("").build());