title: IllegalArgumentException: Not enough variable values available with RestTemplate?
body: <p>I am trying to execute URL using RestTemplate like this - </p>
  
  <pre><code>public static void main(String[] args) throws UnsupportedEncodingException {
      RestTemplate restTemplate = new RestTemplate();
      String url = "http://ptr.vip.host.com/pss/repositories/pssdb/branches/main/query/Service[@alias="
                          + "hello"
                          + "].serviceInstances.runsOn{@resourceId}?allowScan=true&amp;limit=10000&amp;skip=0";
      try {
          String response = restTemplate.getForObject(url, String.class);
          System.out.println(response);
      } catch (RestClientException ex) {
          ex.printStackTrace();
      }
  }
  </code></pre>
  
  <p>But everytime I am getting error like this - </p>
  
  <pre><code>Exception in thread "main" java.lang.IllegalArgumentException: Not enough variable values available to expand '@resourceId'
      at org.springframework.web.util.UriComponents$VarArgsTemplateVariables.getValue(UriComponents.java:272)
  </code></pre>
  
  <p>What is wrong I am doing and how to fix it?</p>
  
  <p><strong>Update:-</strong></p>
  
  <p>I tried with this url as well and it didn't worked for me. I just replaced <code>{@resourceId}</code> with <code>{{@resourceId}}</code></p>
  
  <pre><code>String url = "http://ptr.vip.host.com/pss/repositories/pssdb/branches/main/query/Service[@alias="
                          + "hello"
                          + "].serviceInstances.runsOn{{@resourceId}}?allowScan=true&amp;limit=10000&amp;skip=0";
  </code></pre>
  
  <p><strong>Update-2</strong></p>
  
  <p>Here is the code - </p>
  
  <pre><code>try {
  
      UriComponentsBuilder builder = UriComponentsBuilder
              .fromPath("http://ptr.vip.str.host.com/pss/repositories/pssdb/branches/main/query/Service[@alias="
                      + "hello"
                      + "].serviceInstances.runsOn{@resourceId}?allowScan=true&amp;limit=10000&amp;skip=0");
      UriComponents uriComponents = builder.build();
      URI uri = uriComponents.toUri();
  
      String response = restTemplate.getForObject(uri, String.class);
      System.out.println(response);
  
  } catch (RestClientException ex) {
      ex.printStackTrace();
  }
  </code></pre>
  
  <p>And the error is - </p>
  
  <pre><code>Exception in thread "main" java.lang.IllegalArgumentException: URI is not absolute
      at java.net.URI.toURL(URI.java:1095)
      at org.springframework.http.client.SimpleClientHttpRequestFactory.createRequest(SimpleClientHttpRequestFactory.java:109)
      at org.springframework.http.client.support.HttpAccessor.createRequest(HttpAccessor.java:76)
      at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:479)
      at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:460)
      at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:228)
  </code></pre>