另一个URL内的URL(作为路径)

时间:2015-11-18 05:47:39

标签: java rest url restlet

我想在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。

2 个答案:

答案 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();
        }
    }
    

希望它可以帮到你, 亨利