0

次のようなAPIを使用して、resygwtでRESTベースのサービスを提供しています。

@Path("/search")
@GET
List<User> search(@QueryParam("login") String loginMask) throws RemoteException;

そして、このリクエストに対して「不正な形式の URI シーケンス」を受け取りました。

http://devsys23:8080/rest/search?login=%25spa%20ce%25

JavaDoc で言及されているように、このようなリクエストはデフォルトでサポートされているはずなので、これはかなり奇妙です。

  • HTTP クエリ パラメータの値をリソース メソッド パラメータにバインドします。
  • リソース クラス フィールド、またはリソース クラス Bean プロパティ。
  • {@link Encoded} を使用して無効にしない限り、値は URL デコードされます。
  • 注釈。デフォルト値は {@link DefaultValue} を使用して指定できます
  • 注釈。

useBodyEncodingForURI と URIEncoding="UTF-8" を使用して、server.xml の tomcat コネクタを編集しようとしました。また、org.springframework.web.filter.CharacterEncodingFilter が含まれており、forceEncoding が設定されていましたが、まだ機能しません =(

ログイン パラメータをデコードするように指定するにはどうすればよいですか? アドバイスがあればよろしくお願いします。

4

1 に答える 1

0

値をデコードしたい場合は、を作成しContainerResponseFilter、それをあなたに登録してResourceConfig

String loginValue= queryParams.get("login");
loginValue= URLDecoder.decode(loginValue, "UTF-8");

おそらく、RestyGWT はデフォルトですべてのパラメーターをエンコードしています。

restyGWT の Google ディスカッションで質問する必要があります: https://groups.google.com/forum/#!forum/restygwt

于 2014-09-22T11:56:54.677 に答える