У меня есть успокаивающий метод веб-службы, такой как этот:
@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
внутренних ошибок сервера.
Ответ 1
Я бы предложил принять дату как 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 для строк даты: yyyy-MM-dd
-
API дат Joda Java принят как более полная реализация даты/времени, а некоторые считают, что он более оптимизирован, чем API родной даты Java, особенно для парсинга дат.
-
часто лучше указывать даты как временные метки времени, особенно если ваше приложение работает в разных часовых поясах. Тем не менее, вы должны знать о проблемах кеширования HTTP при принятии отметки времени эпохи (например, если ваши клиенты не усекают временные метки эпохи, тогда вы получите много промахов в кеше). Я хотел бы вернуться к ISO-8601, поскольку отформатированные даты проще для HTTP-кеша.
Ответ 2
Это зависит от формата даты в URL-адресе. Согласно этому вопросу, любой формат, который может обрабатывать конструктор Date(String)
должен работать. Если формат даты отличается, и вы не можете его изменить, вам придется пойти с решением pestrella и получить дату в виде строки и преобразовать ее самостоятельно.
Ответ 3
@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";
}