Это может быть простой ошибкой с моей стороны, но я не могу получить POST, используя curl в XML для работы моего веб-сервиса. Веб-сервис создан с использованием Spring MVC. Я получил его для работы с PUT, и я смог заставить его работать как с POST, так и с PUT в JSON. Вот код контроллера:
// POST
@RequestMapping(value = "/rest", method = RequestMethod.POST, headers = "Accept = application/xml")
public void create(@RequestBody Item item) {
itemServiceHibernate.addItem(item);
}
// PUT
@RequestMapping(value = "/rest", method = RequestMethod.PUT)
public void update(@RequestBody Item item) {
itemServiceHibernate.updateItem(item);
}
Рабочая команда PUT curl выглядит так:
curl -X PUT -H 'Accept:application/xml' -H 'Content-Type: application/xml' http://localhost:8081/BarcodePayment/items/rest --data '<?xml version="1.0" encoding="UTF-8" standalone="no"?><item><id>4</id><description>firstItem</description><price>10.00</price><isVoid>false</isVoid><quantity>1</quantity><weight>4</weight><extendedPrice>10.00</extendedPrice></item>'
Неработающая команда POST curl, которую я пробовал, и ее многочисленные варианты:
curl -X POST -H 'Accept:application/xml' -H 'Content-Type: application/xml' http://localhost:8081/BarcodePayment/items/rest --data '<?xml version="1.0" encoding="UTF-8" standalone="no"?><item><description>firstItem</description><price>10.00</price><isVoid>false</isVoid><quantity>1</quantity><weight>4</weight><extendedPrice>10.00</extendedPrice></item>'
Я пропустил его, потому что он должен автоматически генерироваться базой данных. Кроме того, у меня есть форма, которая создает объект элемента, и у нее нет поля «id», и она работает. Я пытался добавить, но безрезультатно.
PS: Кстати, я использовал порт 8081, потому что я отслеживал ответ через монитор TCP / IP в eclipse / STS. Результат данных POST:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<item>
<description>firstItem</description>
<price>10.00</price>
<isVoid>false</isVoid>
<quantity>1</quantity>
<weight>4</weight>
<extendedPrice>10.00</extendedPrice>
</item>
РЕДАКТИРОВАТЬ: нет сообщения об ошибке. Запрос POST создает объект «item» в БД, но все свойства имеют нулевое значение или имеют начальные значения.
EDI2: это конструктор для класса Item
// Initialization
public Item(){}
public Item(Long id, String description, double price, boolean isVoid, Long quantity, double weight, double extendedPrice) {
this.id = id;
this.description = description;
this.price = price;
this.isVoid = isVoid;
this.quantity = quantity;
this.weight = weight;
this.extendedPrice = extendedPrice;
}