将java日期传递到rest查询参数

nwnhqdif  于 2023-04-10  发布在  Java
关注(0)|答案(3)|浏览(175)

我有

@PUT
@Path("{id}")
public Response modify(@PathParam("id") Integer id, 
                       @QueryParam("user") String user, @QueryParam("time") Date time) {....

我尝试使用RestClient调用这个Web服务(上面的实际上是我所拥有的一个缩减版本)
当我打电话

..../123?user=user1

我点击了网络服务。当我添加时间时,我得到了一个403禁止的消息

..../123?user=user1&time=2013-09-10T20:00:00Z

即使我没有向时间查询参数传递任何东西,我也会得到403。
传递java日期有什么区别吗?
先谢了

brgchamk

brgchamk1#

一个观察结果:看起来你在查询参数前添加了一个额外的斜杠(/):
改变这个

..../123/?user=user1&time=2013-09-10T20:00:00Z

..../123?user=user1&time=2013-09-10T20:00:00Z

第二件事是,你可能要编码你的网址发送日期正确的服务器

uinbv5nw

uinbv5nw2#

很晚才参加聚会!!但我认为这会帮助别人
我可以通过将Date更改为LocalDateTime并使用@DateTimeFormat来使它工作
使用此requestURI工作正常
/test/123?user=user1&time=2013-09-10T20:00:00Z

@GetMapping(value = "/test/{id}")
    public ResponseEntity<String> modify(@PathParam("id") Integer id,
            @RequestParam(name = "user", required = false) String user,
            @DateTimeFormat(iso = ISO.DATE_TIME) @RequestParam("time") LocalDateTime date) {
    System.out.println(date);
}
tzxcd3kk

tzxcd3kk3#

它不能将String反序列化为Date。有两种选择,要么修改日期类接受的日期字符串,要么使用另一种形式,如long值。

相关问题