17

Bir URL'de yol parametresi ve sorgu paramlarını geçmeye çalışıyorum ama garip bir hata alıyorum. Aşağıdaki kod RestTemplate: URL ve sorgu parametreleri birlikte nasıl gönderilir?

String url = "http://test.com/Services/rest/{id}/Identifier" 
    Map<String, String> params = new HashMap<String, String>(); 
    params.put("id", "1234"); 
    UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(url) 
             .queryParam("name", "myName"); 
    String uriBuilder = builder.build().encode().toUriString(); 
    restTemplate.exchange(uriBuilder , HttpMethod.PUT, requestEntity, 
        class_p, params); 

ve ben o iş yapmak için ne yapması gerektiğini benim url http://test.com/Services/rest/%7Bid%7D/Identifier?name=myName

haline geliyor. http://test.com/Services/rest/{id}/Identifier?name=myName'u bekliyorum, bu yüzden paramler, URL'yi

'a ekleyecektir. Teşekkürler

cevap

51

UriComponentsBuilder'dan buildAndExpand tüm URI parametrelerini iletmek için kullanıyorum. Örneğin

:

String url = "http://test.com/solarSystem/planet/{planet}/moon/{moon}"; 

// URI (URL) parameters 
Map<String, String> uriParams = new HashMap<String, String>(); 
uriParams.put("planet", "Mars"); 
uriParams.put("moon", "Phobos"); 

// Query parameters 
UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(url) 
     // Add query parameter 
     .queryParam("firstName", "Mark") 
     .queryParam("lastName", "Watney"); 

System.out.println(builder.buildAndExpand(uriParams).toUri()); 
/** 
* Console output: 
* http://test.com/solarSystem/planet/Mars/moon/Phobos?firstName=Mark&lastName=Watney 
*/ 

restTemplate.exchange(builder.buildAndExpand(uriParams).toUri() , HttpMethod.PUT, 
     requestEntity, class_p); 

/** 
* Log entry: 
* org.springframework.web.client.RestTemplate Created PUT request for "http://test.com/solarSystem/planet/Mars/moon/Phobos?firstName=Mark&lastName=Watney" 
*/ 
+0

iyi çalışıyor. teşekkürler Michal – Shiva

+0

Mutluyum Shiva :) –