2017-07-03 134 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