RabbitMQ Rest API创建交换失败

RabbitMQ Rest API创建交换失败,rabbitmq,Rabbitmq,我正在创建一个Spring启动应用程序,并希望通过rest api创建一个exchange: RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); String auth = "guest:guest"; byte[] enco

我正在创建一个Spring启动应用程序,并希望通过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);
你能帮我一个提示吗?谢谢大家!


如果需要,您可以在此处尝试:

问题很可能是RestTemplate在错误中返回%252f的情况下应用于uri变量的URL编码。为了避免这种情况,您需要使用与URI一起工作的RestTemplate方法,并告诉它假定URL已经编码:

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); 

谢谢,就是这个!太好了!
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);