下面的代码片段使用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
6条答案
按热度按时间wb1gzix01#
绝对URI指定方案;非绝对URI被称为相对URI。
http://docs.oracle.com/javase/8/docs/api/java/net/URI.html
所以,也许你的URLEncoder没有像你期望的那样工作(https位)?
niwlg2el2#
问题很可能是您在已经是URI的对象上调用URLEncoder.encode()。
qlvxas9a3#
对于遇到此错误且与OP问题并非100%相关的其他人,请检查您是否正在传递该值,并且在Spring引导的情况下该值不为空: @Values 注解。
rpppsulh4#
也许问题只出在IDE编码设置上。尝试在所有地方都设置UTF-8:
ql3eal8s5#
在API密钥授权方案中...
在从第一个REST调用获取AUTH_TOKEN和ENDPOINT_URL之后,您可能正在执行第二个REST调用。
检查“+“的连接<ENDPOINT_URL><API_METHOD_URI>,您可能只发送API_METHOD_URI。
我在使用Streamsets集成平台尝试连接Oracle的Responsys API时遇到了这种情况。
bq9c1y666#
对我来说,我得到这个错误,当在yaml文件中的configuation,组成我的URL被更改。哎呀,