簡體   English   中英

Spring Boot Restful Web服務。 XML響應格式錯誤

[英]Spring boot restful web service. Xml response wrongly formatted

我有一個運行在Eclipse Neon上的使用Spring Boot 2.1,Java 8的簡單Restful web服務。 我發送以下請求:

<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個PatentList元素,而不是內部的Patent元素,我不知道為什么。 我的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 Controller類是:

@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客戶端發送請求書:Content-type = application / xml的Rest客戶端

我已經建立了兩個 patentList元素名稱的映射,以獲取PatentListWrapper中的PatentList ()。 如何獲得響應信封以匹配請求信封? 任何幫助表示贊賞。

的確如此,只需使用如下相同的變量名創建getter setter方法,而不是對getter setter方法使用不同的名稱

private List<Patent> patents;

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

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

或使用GSON並使用@JsonProperty並定義所需的值名稱,此外,如果您不使用IDE來生成getter和setter,則最好使用lombok插件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM