Как мне получить этот POST, используя curl в XML для работы с Spring MVC Web Service - PullRequest
0 голосов
/ 02 декабря 2011

Это может быть простой ошибкой с моей стороны, но я не могу получить 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;
}
...