调用Restful Webservice时,Uri不是绝对异常

Sur*_*tta 15 java cas web-services servlets http

以下代码段用于使用restful API调用我的Web服务.

ClientConfig config = new DefaultClientConfig();
    Client client = Client.create(config);
    String uri= "https://127.0.0.1:8443/cas-server-webapp-3.5.0/login";
    WebResource resource = client.resource(URLEncoder.encode(uri));
      MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl();
       queryParams.add("username", "suresh");
       queryParams.add("password", "suresh");
       resource.queryParams(queryParams); 
       ClientResponse response = resource.type(
            "application/x-www-form-urlencoded").get(ClientResponse.class);
    String en = response.getEntity(String.class);
    System.out.println(en); 
Run Code Online (Sandbox Code Playgroud)

并在运行上述代码时获得此异常

com.sun.jersey.api.client.ClientHandlerException: java.lang.IllegalArgumentException: URI is not absolute

    at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:151)
    at com.sun.jersey.api.client.Client.handle(Client.java:648)
    at com.sun.jersey.api.client.WebResource.handle(WebResource.java:680)
Run Code Online (Sandbox Code Playgroud)

我搜索了许多文章,并没有得到我做错的地方.

旁注:cas-server-webapp-3.5.0 在Apache tomacat7中部署在我的机器上的war

Jal*_*rdo 14

对于遇到此错误且与 OP 问题并非 100% 相关的其他人,请检查您是否传递了该值,并且在 spring-boot: @Value 注释的情况下该值不为 null。


Bob*_*gon 10

绝对URI指定方案; 一个非绝对的URI被认为是相对的.

http://docs.oracle.com/javase/8/docs/api/java/net/URI.html

那么,也许你的URLEncoder不能正常工作(https位)?

    URLEncoder.encode(uri) 
Run Code Online (Sandbox Code Playgroud)


Jul*_*hke 7

问题很可能是您在已经是 URI 的内容上调用 URLEncoder.encode()。