【问题标题】:Restful Web service- adding List of PojosRestful Web 服务-添加 Pojos 列表
【发布时间】:2017-03-15 15:26:56
【问题描述】:

我正在尝试通过 Restful Web 服务传递 Pojo 的列表(状态类)。

@POST
@Path("/saveDetails2")
@Consumes(MediaType.APPLICATION_JSON)
public String saveFormerWithLandDetails(@FormParam("name") String name, @FormParam("mobileNo") Long mobileNo,
        @FormParam("address1") String address1,@FormParam("address2") String address2,@FormParam("states")List<State> states) {
    // Business logic
    return  "SUCCESS";

}

在邮递员中,以下 json 数据添加为原始数据:

{  
   "name":"ABCDSSS",
   "mobile":123456789,
   "addressLine1":"ADDRESS3456",
   "addressLine2":"ADDRESS3456",
   "states":[  
         {  
          "code":"ABC",
          "name":"TEST"
         }
    ]
 }

在 Header 中,Content-Type - application/json

状态表是:

   @XmlRootElement(name = "State")
   @XmlAccessorType(XmlAccessType.NONE)
  public class State implements Serializable {

   @Id
   @XmlElement(name = "id")
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private long id;

  @XmlElement(name="code")
  @ Column(name = "state_code")
  private String code;

  @XmlElement(name="name")
  @Column(name="state_name")
  private String name;

  // setters and getters
}

错误是:

HTTP 状态 500 - java.lang.IllegalStateException:当请求实体的内容类型不是 application/x-www-form-urlencoded 时使用 @FormParam

那么什么是 Param 注释(@QueryParam 和 @PathParam 都没有传递数据)我可以在我的情况下使用?

在 Restful Web 服务中使用 Pojo 并通过 POSTMAN 进行测试的最佳方式是什么。

我在 SOF 中发现与此类似,但传递了字符串列表,我采用了相同的方法但没有奏效。

【问题讨论】:

    标签: java json rest jersey


    【解决方案1】:

    尝试使用应该从 POST 请求中提取值的@PathParam

    看看这个https://jersey.java.net/documentation/latest/jaxrs-resources.html#d0e2225

    【讨论】:

      【解决方案2】:

      您已在问题中包含问题的原因。

      在 Header 中,Content-Type - application/json

      @FormParam 是 x-www-url-encoded 正文中的参数,其注册内容类型为 application/x-www-form-urlencoded。

      应用程序/json 的使用排除了@FormParam 的使用。您有几个选择:您可以使用适当的媒体类型来利用注释;您可以使用 AoP 编写自己的 binder 来解析值并传递它;您可以利用任意数量的 json 解析框架来自己解析它;或者你可以使用JsonPath

      【讨论】:

        猜你喜欢
        • 2015-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-19
        • 1970-01-01
        • 2012-09-12
        • 2012-09-10
        相关资源
        最近更新 更多