IllegalArgumentException: Nicht genügend Werte für Variablen zur Verfügung, mit RestTemplate?

Ich versuche zum ausführen von URL mit Hilfe der RestTemplate wie diese -

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&limit=10000&skip=0";
    try {
        String response = restTemplate.getForObject(url, String.class);
        System.out.println(response);
    } catch (RestClientException ex) {
        ex.printStackTrace();
    }
}

Aber jedesmal erhalte ich eine Fehlermeldung wie diese -

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)

Was ich falsch mache und wie man es beheben?

Update:-

Habe ich versucht mit dieser url als gut, und es hat nicht für mich gearbeitet. Ich habe gerade ersetzt {@resourceId} mit {{@resourceId}}

String url = "http://ptr.vip.host.com/pss/repositories/pssdb/branches/main/query/Service[@alias="
                        + "hello"
                        + "].serviceInstances.runsOn{{@resourceId}}?allowScan=true&limit=10000&skip=0";

Update-2

Hier ist der 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&limit=10000&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();
}

Und der Fehler ist -

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)
Ist dies {@resourceId} soll eine uri-variable oder ist es bedeutete, zu erscheinen buchstäblich in der uri? (Ich habe Sie als Favoriten markiert, ich werde später wieder prüfen.)
{@resourceId} sollte in der url vorhanden, wie es ist, d.h. es erscheint buchstäblich in die uri, wie es ist.
Ich glaube, Sie brauchen, um zu entkommen { und } weil Sie daneben URI Variablen. Wenn ich richtig bin, sollte es {{@resourceId}}. Ich werde sehen, was sich bald.
Ich habe versucht, und es hat nicht funktioniert für mich. Ich habe aktualisiert die Frage mit der URL, die ich versucht habe. Alle anderen Gedanken?

InformationsquelleAutor john | 2014-12-18

Schreibe einen Kommentar