Uri Not Absolute Exception Getting While Calling Restful Webservice

The below code snippet is using to call my web service using restful API.

ClientConfig config = new DefaultClientConfig();
    Client client = Client.create(config);
    String uri= "";
    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); 

And getting this exception while running the above code

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)

I googled many articles and did'nt get where i am doing wrong .

Side note :cas-server-webapp-3.5.0 war deployed on my machine in Apache tomacat7

2

6 Answers

An absolute URI specifies a scheme; a URI that is not absolute is said to be relative.

So, perhaps your URLEncoder isn't working as you're expecting (the https bit)?

    URLEncoder.encode(uri) 

The problem is likely that you are calling URLEncoder.encode() on something that already is a URI.

For others who landed in this error and it's not 100% related to the OP question, please check that you are passing the value and it is not null in case of spring-boot: @Value annotation.

Maybe the problem only in your IDE encoding settings. Try to set UTF-8 everywhere:

In an API Key Authorization Scenario...

You may be performing the 2nd REST call after getting an AUTH_TOKEN and ENDPOINT_URL from the first REST call.

Check your concatenation of "<ENDPOINT_URL> + <API_METHOD_URI>", you may be sending only the API_METHOD_URI.

This happened to me using the Streamsets integration platform trying to connect to Oracle's Responsys API.

For me, I was getting this error, when configuation in yaml files, which composed my URL was changed. oops,

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

David Miller

David Miller

Executive Financial & Market Analyst

David Miller brings 15 years of experience in global economics, personal finance strategy, and market dynamics. He specializes in turning complex economic trends into actionable insights for everyday readers.

Share this article
Twitter Facebook Pinterest