我有一个像这样的宁静的网络服务方法:
@GET
@Path("/generateInfo")
@Produces(MediaType.APPLICATION_JSON)
public String generateInfo(
@QueryParam("a") String a,
@QueryParam("b") String b,
@QueryParam("date") Date date) {
// ...business code...
return "hello world";
}
如何从WebBrowser调用该方法?问题是Date
参数,当我尝试给出404
未找到或500
内部服务器错误时。
答案 0 :(得分:14)
我建议接受日期为String
并自行解析。像这样:
@GET
@Path("/generateInfo")
@Produces(MediaType.APPLICATION_JSON)
public String generateInfo(
@QueryParam("a") String a,
@QueryParam("b") String b,
@QueryParam("date") String date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date dateObj = sdf.parse(date);
return "hello world";
}
通过浏览器发出此请求的方法是:
http://localhost/your_service/generateInfo?date=2013-02-14
解析日期时需要考虑的事项:
SimpleDateFormat
非常灵活,可以解析不同的日期格式。 ISO standard for date字符串为:yyyy-MM-dd
Joda Java date API被视为更完整的日期/时间实现,some believe that it is more optimised than Java's native date API尤其适用于解析日期。
通常最好将日期作为纪元时间戳提供,特别是如果您的应用程序在不同的时区运行。但是,在接受纪元时间戳时,您必须了解HTTP缓存问题(例如,如果您的客户端没有截断纪元时间戳,那么您将获得大量缓存未命中)。我会回顾ISO-8601,因为格式化的日期更容易进行HTTP缓存。
答案 1 :(得分:0)
这取决于URL中日期的格式。
根据{{3}},构造函数Date(String)
可以处理的任何格式都应该有效。如果您的日期格式不同而您无法更改,则必须使用pestrella的解决方案并以字符串形式接收日期并自行转换。
答案 2 :(得分:0)
@GET
@Path("/generateInfo")
@Produces(MediaType.APPLICATION_JSON)
public String generateInfo(
@QueryParam("a") String a,
@QueryParam("b") String b,
@QueryParam("date") String str_date) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date date = df.parse(str_date);
return "hello world";
}