以下のコードスニペットは、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
Apache tomacat7の私のマシンにデプロイされたwar
絶対URIはスキームを指定します。絶対ではないURIは相対であると言われます。
http://docs.Oracle.com/javase/8/docs/api/Java/net/URI.html
では、おそらくURLEncoderが期待どおりに機能していません(httpsビット)。
URLEncoder.encode(uri)
問題は、すでにURIであるものに対してURLEncoder.encode()を呼び出している可能性があります。