3

Can anyone advise on how to turn off template variable matching in Jersey Client? org.glassfish.jersey.client.JerseyClient

When preparing a GET request that contains text such as: /api/users/{$USER_ID}/firstname it will throw an Exception like below:

java.lang.IllegalStateException: The template variable 'USER_ID' has no value
    at org.glassfish.jersey.client.JerseyWebTarget.getUri(JerseyWebTarget.java:134)
    at org.glassfish.jersey.client.JerseyWebTarget.request(JerseyWebTarget.java:214)
....
Caused by: java.lang.IllegalArgumentException: The template variable 'USER_ID' has no value
    at org.glassfish.jersey.uri.UriTemplate$1ValuesFromArrayStrategy.valueFor(UriTemplate.java:1020)
    at org.glassfish.jersey.uri.UriTemplate.resolveTemplate(UriTemplate.java:706)
    at org.glassfish.jersey.uri.UriTemplate.createUriComponent(UriTemplate.java:1030)
    at org.glassfish.jersey.uri.UriTemplate.createURIWithStringValues(UriTemplate.java:970)
    at org.glassfish.jersey.uri.UriTemplate.createURIWithStringValues(UriTemplate.java:906)
    at org.glassfish.jersey.uri.UriTemplate.createURI(UriTemplate.java:871)
    at org.glassfish.jersey.uri.internal.JerseyUriBuilder._build(JerseyUriBuilder.java:914)
    at org.glassfish.jersey.uri.internal.JerseyUriBuilder.build(JerseyUriBuilder.java:831)
    at org.glassfish.jersey.client.JerseyWebTarget.getUri(JerseyWebTarget.java:132)
Mobigital
  • 749
  • 7
  • 14

1 Answers1

1

based on @NathanKumar's comment I tried URL-encoding the ${...} content like this:

String query = query.replace("${", "%24%7B").replace("}", "%7D");

and it solved the problem!

Mobigital
  • 749
  • 7
  • 14