Web Services 调用Restful Web服务时获取URI时出现非绝对异常错误

drkbr07n  于 2022-11-15  发布在  其他
关注(0)|答案(6)|浏览(230)

下面的代码片段使用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);

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

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)

我在谷歌上搜索了很多文章,没有找到我做错的地方。
侧记:cas-server-webapp-3.5.0 war部署在我的机器上的Apache tomacat7

wb1gzix0

wb1gzix01#

绝对URI指定方案;非绝对URI被称为相对URI。
http://docs.oracle.com/javase/8/docs/api/java/net/URI.html
所以,也许你的URLEncoder没有像你期望的那样工作(https位)?

URLEncoder.encode(uri)
niwlg2el

niwlg2el2#

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

qlvxas9a

qlvxas9a3#

对于遇到此错误且与OP问题并非100%相关的其他人,请检查您是否正在传递该值,并且在Spring引导的情况下该值不为空: @Values 注解。

rpppsulh

rpppsulh4#

也许问题只出在IDE编码设置上。尝试在所有地方都设置UTF-8:

ql3eal8s

ql3eal8s5#

在API密钥授权方案中...
在从第一个REST调用获取AUTH_TOKEN和ENDPOINT_URL之后,您可能正在执行第二个REST调用。
检查“+“的连接<ENDPOINT_URL><API_METHOD_URI>,您可能只发送API_METHOD_URI。
我在使用Streamsets集成平台尝试连接Oracle的Responsys API时遇到了这种情况。

bq9c1y66

bq9c1y666#

对我来说,我得到这个错误,当在yaml文件中的configuation,组成我的URL被更改。哎呀,

相关问题