2017-05-11 18 views
0

RestTemplateからリクエストを送信したいと思います。しかし、私のURLは中括弧({、 '}')を持っています。したがって、私は例外があります。RestTemplateリクエストの中括弧( "{"、 "}")

私は、URI

UriComponentsBuilder builder = UriComponentsBuilder.fromPath(url); 
UriComponents uriComponents = builder.build(); 
URI uri = uriComponents.toUri(); 

を通じてそれを行うみてくださいしかし、私は新しい例外ました: "プロトコル= httpsのホスト=ヌルを"。

私は自分のURLでリクエストを送信できますか? URLには中括弧を使用する必要があります。

私のコード:コードの下

String url = "https://api.vk.com/method/execute?code=return[API.users.search({"count":1})];&access_token... 
String result = restTemplate.getForObject(url, String.class); 
+0

レストテンプレートはURLをエンコードします。唯一の回避策はURIを使用することです – Coder

答えて

0

UriComponentsBuilderを使用してURIを暗号化は、クエリがRestTemplateを使用してparamsはともあればHttpHeadersを設定します追加します。

public HttpEntity<String> getEntityByUri() { 
     String req = "https://api.vk.com/method/execute"; 

     UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(req) 
       .queryParam("code", 
         "return[API.users.search({"count":1})]"); 
     HttpHeaders headers = new HttpHeaders(); 
     headers.setAccept(Arrays.asList(MediaType.ALL)); 
     HttpEntity<String> httpEntity = new HttpEntity<String>(headers); 
     return new RestTemplate().exchange(builder.build().encode().toUri(), HttpMethod.GET, httpEntity, String.class); 
    } 

これは役に立って幸運を願っています!