Отладка ошибки распаковки Джерси - синтаксически неправильный неверный запрос

Я создаю веб-сервис REST с помощью Джерси на Glassfish. Теперь я борюсь с моим пользовательским источником ввода для моих поисковых запросов.

Если есть метод поиска:

@POST
@Path("search")
@Consumes({"application/xml", "application/json"})
@Produces({"application/xml", "application/json"})
public List<Index> search(SearchQuery searchqry) {
   ...
}

И класс SearchQuery:

@XmlRootElement
public class SearchQuery implements Serializable {
    private static final long serialVersionUID = 1L;

    public SearchQuery() {
    }

    public SearchQuery(float lat, float lng) {
        this.lat = lat;
        this.lng = lng;
    }

    public float getLat() {
        return lat;
    }

    public void setLat(float lat) {
        this.lat = lat;
    }

    public float getLng() {
        return lng;
    }

    public void setLng(float lng) {
        this.lng = lng;
    }

    private float lat;
    private float lng;
}

И мой звонок:

curl -v -X POST --data-binary "<SearchQuery><lat>3.3</lat><lng>5.4</lng></SearchQuery>" -H "Content-Type: application/xml" -H "Accept: application/xml" http://localhost:8080/WebApplication1/resources/index/search

Я попробовал консоль отдыха для отправки XML-запроса, но получаю ту же ошибку:

HTTP Status 400 - Bad Request


type Status report

сообщениеНеверный запрос

описаниеЗапрос, отправленный клиентом, был синтаксически неверным (неверный запрос).


Сервер GlassFish с открытым исходным кодом, версия 3.1.2

* Closing connection #0

Я что-то упускаю по существу, или кто-нибудь может подсказать, как отладить несортирующую часть внутри сервера приложений?

Я следовал руководству по адресу http://xebee.xebia.in/2011/12/30/example-of-restful-webservice-with-xml-and-json-using-maven-jaxb-jersey-tomcat-and-curl/ и проверил различные комбинации аннотаций, но безуспешно :(


person Michele    schedule 12.03.2012    source источник
comment
Вы возвращаете список объектов индекса. Является ли этот класс (индекс) сериализуемым и помечен @XMLRootElement?   -  person BWitched    schedule 12.03.2012
comment
@BWitched jep, я также проверил метод с void в качестве возвращаемого значения, все еще не работает :(   -  person Michele    schedule 12.03.2012
comment
Возможно, вы уже пробовали, но перехватили ли вы отправленный http-пакет (или лучше тот, который приходит на сервер)? Просто чтобы убедиться, что это на 100% правильно. Еще одна идея, у меня были некоторые проблемы с Джерси, которые были решены добавлением / в начале пути: @Path(/search)   -  person BWitched    schedule 13.03.2012
comment
Похоже, вам нужно указать правильный тип контента для сервера: curl ... -H "Content-Type: application/xml".   -  person dma_k    schedule 14.03.2012
comment
@dma_k Я уже отправил ContentType в своем выражении curl в конце, +Bwitched протестировал его с помощью /search, но ничего, я продолжу тестировать с помощью whireshark и посмотрю, что отправлено на сервер.   -  person Michele    schedule 14.03.2012
comment
А, извините, не заметил. Я бы предложил тогда увеличить уровень журнала и посмотреть, где он ломается. Возможно, запуск отладки с верхнего сервлета был бы более эффективным...   -  person dma_k    schedule 14.03.2012
comment
Кто-нибудь знает, как заставить майку регистрировать значимые сообщения об ошибках несортировки? Это, вероятно, будет лучшим ответом здесь.   -  person Damon Smith    schedule 06.01.2015


Ответы (1)


НАКОНЕЦ нашел реальную причину моей проблемы: SearchQuery сопоставляется с "searchQuery" внутри XML

TESTClass сопоставляется с tESTClass внутри объекта XML.

person Michele    schedule 17.03.2012