15

私はこのような安らかなWebサービスメソッドを持っています:

@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内部サーバーエラーが発生するパラメータです。

4

3 に答える 3

15

日付をaとして受け入れ、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

  • Joda Java date APIは、日付/時刻のより完全な実装として受け入れられており、特に日付の解析に関して、JavaのネイティブdateAPIよりも最適化されていると考える人もいます。

  • 特にアプリケーションが異なるタイムゾーンで動作する場合は、エポックタイムスタンプとして日付を指定する方がよい場合がよくあります。ただし、エポックタイムスタンプを受け入れる場合は、HTTPキャッシュの問題に注意する必要があります(たとえば、クライアントがエポックタイムスタンプを切り捨てていない場合、多くのキャッシュミスが発生します)。フォーマットされた日付はHTTPキャッシュしやすいので、 ISO-8601に戻って参照します。

于 2013-02-14T17:00:06.047 に答える
0

URLの日付の形式によって異なります。この質問によると、コンストラクターが処理できるすべての形式Date(String)が機能するはずです。日付形式が異なり、変更できない場合は、pestrellaのソリューションを使用して、日付を文字列として受け取り、自分で変換する必要があります。

于 2013-02-14T17:07:01.050 に答える
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";
}
于 2017-03-28T10:39:37.157 に答える