gpt4 book ai didi

java - URL中的Webflux Webclient转义斜杠

转载 作者:行者123 更新时间:2023-12-03 16:21:40 25 4
gpt4 key购买 nike

我需要在URL中包含一个斜杠以访问RabbitMQ API,并且我正在尝试使用WebClient来获取数据:

WebClient.builder()
.baseUrl("https://RABBIT_HOSTNAME/api/queues/%2F/QUEUE_NAME")
.build()
.get().exchange();
当我用 /替换 %2F时,我可以在请求描述符中看到 %2F已更改为 %252F,因此,我找不到响应。
我尝试了以下选项:
"\\/"-WebClient更改为 %5C,但是Rabbit无法正确解释它并返回404。
"%5C"-WebClient更改为 %255C,Rabbit返回404。
如何使用WebClient在URL中保留 %2F

最佳答案

默认情况下,它将始终对URL进行编码,因此我可以看到两个选项

  • 完全忽略baseUrl方法,并将完全限定的URL传递到uri方法中,该方法将覆盖baseUrl方法。
    WebClient.builder()
    .build()
    .uri(URI.create( "https://RABBIT_HOSTNAME/api/queues/%2F/QUEUE_NAME"))
    .get().exchange();
  • 创建您自己的自定义UriBuilderFactory,映射一个Uri,并将编码设置为NONE
    public class CustomUriBuilderFactory extends DefaultUriBuilderFactory {

    public CustomUriBuilderFactory(String baseUriTemplate) {
    super(UriComponentsBuilder.fromHttpUrl(baseUriTemplate));
    super.setEncodingMode(EncodingMode.NONE);
    }
    }

    然后您可以使用uriBuilderFactorybaseUrl,这将允许您仅将uri用于uri部分
    WebClient.builder()
    .uriBuilderFactory(
    new CustomUriBuilderFactory(
    "https://RABBIT_HOSTNAME/api/queues/%2F/QUEUE_NAME"
    ))
    .build()
    .get()
    .uri(whatever)
    .exchange();
  • 关于java - URL中的Webflux Webclient转义斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61271468/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com