Весенняя загрузка отдыхающего веб-сервиса. Неправильный формат ответа XML - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть простой веб-сервис Restful, использующий Spring Boot 2.1, Java 8, работающий на Eclipse Neon. Я отправляю следующий запрос:

<patentListWrapper>
    <patentList>
        <patent>
            <guid>bbb</guid>
        </patent>
       <patent>
           <guid>ccc</guid>
       </patent>
    </patentList>
</patentListWrapper>

и я получаю следующий (неправильный) ответ:

<patentListWrapper>
    <patentList>
        <patentList>
            <guid>ddd</guid>
        </patentList>
       <patentList>
           <guid>eee</guid>
       </patentList>
    </patentList>
</patentListWrapper>

то есть в ответе есть 2 элемента патентных списка, а не внутренний патентный элемент, и я не знаю почему. Мои 2 класса POJO для сопоставления запроса:

public class PatentListWrapper {

private List<Patent> patents;

public List<Patent> getPatentList() {
    return patents;
}

public void setPatentList(List<Patent> patents) {
    this.patents = patents;
}   
}

и

public class Patent {

private String guid;

public String getGuid() {
    return guid;
}

public void setGuid(String guid) {
    this.guid = guid;
}

public Patent() {
    super();
}
}

мой класс контроллера REST:

@RestController
public class PndController {
@Autowired
ReadFromDb db;

@RequestMapping(value = "/guidRequest/xmlList", method = RequestMethod.POST, produces = { "application/xml", "text/xml" }, consumes = MediaType.ALL_VALUE )

public PatentListWrapper guidSearchList(@RequestBody  PatentListWrapper patentListWrapper) {
    System.out.println("DS in  guidSearchList()");

    patentListWrapper = db.readGuidsFromDb(patentListWrapper); // Set the guid in the patents List in patentListWrapper

    return patentListWrapper;
}
}

и класс ReadFromDb:

@Repository
public class ReadFromDb {

public PatentListWrapper readGuidsFromDb(PatentListWrapper patentListWrapper) {
    List<Patent> patents=  patentListWrapper.getPatentList();
    for(Patent patent : patents) {
        patent.setGuid("aaa");
    }
    patentListWrapper.setPatentList(patents);
    return patentListWrapper;
}

}

Я отправляю свое резюме с помощью Windows ARC Advanced Rest Client: Отдых клиента с Content-type = application / xml

Я установил, что оба названия элементов патентList отображаются для получения PatentList () в PatentListWrapper. Как получить конверт ответа, соответствующий конверту запроса? Любая помощь приветствуется.

1 Ответ

0 голосов
/ 12 ноября 2018

это правда, просто создайте метод метода получения, с тем же именем переменной, как показано ниже, вместо использования разных имен для методов метода получения

private List<Patent> patents;

public List<Patent> getPatents() {
 return patents;
}

public void setPatents(List<Patent> patents) {
 this.patents = patents;
}

или используйте GSON и используйте @JsonProperty и определите имя требуемого значения; далее, если вы не используете IDE для генерации геттеров и сеттеров, лучше использовать плагин lombok.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...