成功せずに URL クエリ パラメータを抽出しようとしています。
例: AboutWebServices/merchantofferings?lat=5?long=7?cat=9
Tomcat サーバーを使用して、Restlets のさまざまな注文を試しました。
@Override
public synchronized Restlet createInboundRoot() {
Router router = new Router(getContext());
Extractor extractor = new Extractor(getContext());
extractor.extractFromQuery("lat", "lat", true);
extractor.extractFromQuery("long", "long", false);
extractor.extractFromQuery("cat", "cat", false);
ChallengeAuthenticator guard = new ChallengeAuthenticator(getContext(),
ChallengeScheme.HTTP_BASIC,
"AnywhereAbout");
guard.setVerifier(new UserVerifer());
guard.setNext(extractor);
extractor.setNext(router);
// router.attach("/merchantofferings", extractor);
router.attach("/merchantofferings", MerchantOfferings.class);
router.attach("/merchantofferings/{id}", MerchantOfferings.class);
router.attach("/merchantprofile", MerchantProfile.class);
router.attach("/merchantprofile/{id}", MerchantProfile.class);
return guard;
}
ルーティングはこのメソッドに対して正常に機能しますが、属性は null です。
//@Get("json+?lat?long?cat")
@Get("json")
public String representGet() {
Context context = getContext();
String lat = (String) context.getAttributes().get("lat");
String lon = (String) context.getAttributes().get("long");
String cat = (String) context.getAttributes().get("cat");
return "hello, world: " + this.getRequest().toString();
}
また、私は新しい Restlet in Action を読んでいます。すばらしい本ですが、注釈でクエリ パラメータを指定できると書かれていますが、それらがどのように使用されるかについては説明されていません。つまり、例がありません。誰か知っていますか?いずれにせよ @Get("json+?lat?long?cat") のバリエーションも機能しませんでした。