2017-07-03 42 views
0

我創建一個春天啓動應用程序,我想創建通過REST API交換:RabbitMQ的REST API創建Exchange失敗

RestTemplate restTemplate = new RestTemplate(); 

    HttpHeaders headers = new HttpHeaders(); 
    headers.setContentType(MediaType.APPLICATION_JSON); 

    String auth = "guest:guest"; 
    byte[] encodedAuth = Base64.encodeBase64(auth.getBytes(Charset.forName("US-ASCII"))); 
    String authHeader = "Basic " + new String(encodedAuth); 
    headers.set("Authorization", authHeader); 

    String uri = "http://localhost:15672/api/exchanges/%2f/my-new-exchange-new"; 

    String input = "{\"type\":\"direct\",\"durable\":\"true\"}"; 

    HttpEntity<String> entity = new HttpEntity<String>(input,headers); 

    ResponseEntity<String> response = restTemplate.exchange(uri, HttpMethod.PUT, entity, String.class); 

    System.out.println(response); 

不過,我總是得到錯誤:

PUT request for "http://localhost:15672/api/exchanges/%252f/my-new-exchange-new" resulted in 404 (Not Found); invoking error handler 

莫非你請幫助我一個提示?謝謝!

你可以嘗試一下,如果你想在這裏:https://github.com/pkid/rabbittest

回答

1

的問題是最有可能給出的%252f錯誤返回RestTemplate應用到您的uri變量的URL編碼。爲了避免這種情況,你需要使用RestTemplate方法與URI工作,並告訴它承擔的網址已編碼:

String uri = "http://localhost:15672/api/exchanges/%2F/my-new-exchange-new"; 
restTemplate.exchange(UriComponentsBuilder.fromHttpUrl(uri) 
              .build(true) 
              .toUri(), HttpMethod.PUT, entity, String.class); 
+0

感謝,這是它! Owesome! – Yashu