簡體   English   中英

向REST API發送application / xml POST消息不起作用

[英]Sending application/xml POST message to REST API doesn't work

這是使用JAX-RS注釋的POST方法:

@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.TEXT_PLAIN)
public Response storeUser(User user) {

   boolean wasStored = JPAUserStore.storeUser(user);

   if (wasStored) {
      return Response.ok("User was stored.").build();
   } else {
      return Response.status(Status.BAD_REQUEST).build();   
   }

}

這是帶有JAXB注釋的類User:

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public User {

  @XmlElement(name = "Name")
  protected String name;

  @XmlElement(name = "Address")
  protected String address;

  public void setName(String name) {
     this.name = name;
  }

  public String getName() {
     return this.name;
  }

  public void setAddress(String address) {
     this.address = address;
  }

  public String getAddress() {
     return this.address;
  }

}

REST Web服務在Jetty上運行。 當我發送一個請求消息(使用RESTClient Firefox插件),內容類型為“application / xml”和本機構

 <?xml version="1.0" encoding="UTF-8"?>
 <User>
    <Name>Max</Name>
    <Address>Main Street 12</Address>
 </User>

到適當的資源,將返回400 Bad請求。 根據日志,沒有執行JPAUserStore.storeUser(...)方法。

是什么原因,為什么使用@POST注釋的方法將不會被執行並返回OK?

默認情況下, User類的根元素是user ,您需要使用@XmlRootElement(name="User")來匹配XML文檔。

暫無
暫無

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

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