我想在Restlet中使用以下类型的网址:http://url.com/http://www.anotherurl.com/path
因此,我希望将http://www.anotherurl.com/path
作为参数。
但它什么也没做。
另外,如果我使用http://url.com/path
,那么我会收到"路径"没有问题。 http://url.com/www.anotherurl.com
给了我www.anotherurl.com
。但是http://url.com/www.anotherurl.com/path
是404。
答案 0 :(得分:4)
您需要正确编码参数特殊字符。使用URLEncoder即可。
答案 1 :(得分:0)
事实上,这里有两个部分。
使用Reference
类构建的网址:
Reference ref = new Reference();
ref.setScheme("http");
ref.setHostDomain("localhost");
ref.setHostPort(8182);
ref.addSegment("test");
ref.addSegment("http://test");
ClientResource cr = new ClientResource(ref);
cr.get();
将值作为路径参数获取并对其进行解码。以下是应用程序类中的路由配置:
public Restlet createInboundRoot() {
Router router = new Router(getContext());
router.attach("/test/{id}", MyServerResource.class);
return router;
}
服务器资源中的相应代码:
public class MyServerResource extends ServerResource {
@Get
public Representation get() {
String id = getAttribute("id");
// Prints http%3A%2F%2Ftest
System.out.println("id = "+id);
// Prints http://test
System.out.println("id = "+Reference.decode(id));
return new EmptyRepresentation();
}
}
希望它可以帮到你, 亨利