当前位置: 首页 > 知识库问答 >
问题:

URL中的Webflux Webclient转义斜线

扈高逸
2023-03-14

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

WebClient.builder()
     .baseUrl("https://RABBIT_HOSTNAME/api/queues/%2F/QUEUE_NAME")
     .build()
     .get().exchange();

当我将/替换为%2f时,我可以在请求描述符中看到%2f已更改为%252f,因此我得到了未找到的响应。

我尝试了以下选项:

“%5c”-WebClient更改为%255c,Rabbit返回404。

如何使用WebClient将%2f保存在url中?

共有1个答案

周威
2023-03-14

默认情况下,它将始终对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);
        }
    }
    
    WebClient.builder()
            .uriBuilderFactory(
                new CustomUriBuilderFactory(
                    "https://RABBIT_HOSTNAME/api/queues/%2F/QUEUE_NAME"
            ))
            .build()
            .get()
            .uri(whatever)
            .exchange();
    

  •  类似资料:
    • 问题内容: 我经营一个摄影网站。摄影师将其“ by_line”作为“ Some name / ourwebsite.com”。 我有一个用于大多数查询的DSL,使用“条件”将“过滤”查询串在一起,这在90%的情况下都非常有效,但是在这种情况下,我通过这样的查询返回的结果为零(请注意我如何尝试逃脱正斜线): 我正在使用Elasticsearch 1.5.2版 当我查看此URL的映射时 这是一个示例记

    • 问题内容: 我从Instagram提取JSON: 然后将变量解析为PHP数组以重组数据,然后重新编码和缓存文件: 当我打开缓存文件时,我所有的正斜杠“ /”都被转义了: 我从搜索中收集到自动执行此操作…是否可以禁用它? 问题答案: 有没有办法禁用它? 是的,您只需要使用该标志。 重要的 阅读之前:https : //stackoverflow.com/a/10210367/367456(知道你在做

    • 问题内容: 谁能告诉我在Java中如何使用正斜杠转义字符。我知道反斜杠是\ \,但是我尝试了\ /和/ /却没有运气! 这是我的代码: 提前致谢! 问题答案: 您既不需要以Java语言或正则表达式来转义正斜杠。 还要注意这样的块: 更紧凑和可读地写为: 因此,对于您而言,我相信您的方法应类似于: 请注意,这不是测试有效日期的一种非常好的方法-可能也应该尝试将其解析 为 日期,或者将其解析 为 日期

    • 问题内容: 我必须在SpringBoot应用程序中使用@PathValiable从URL获取参数。这些参数通常带有 斜线 。我无法控制用户在URL中输入的内容,因此我想获取他输入的内容,然后我就可以对其进行处理。 我已经在这里浏览过材料和答案,我认为对我而言,好的解决方案不是要求用户以某种方式对输入的参数进行编码。 SpringBoot代码很简单: 因此,URL如下所示: 问题在于,参数 modu

    • 我必须在SpringBoot应用程序中使用@PathValiable从URL获取参数。这些参数通常有斜线。我没有一个关于用户将输入URL的控制,所以我想要得到他输入的内容,然后我可以处理它。 我已经看过了这里的资料和答案,我不认为对我来说,好的解决方案是要求用户以某种方式编码输入参数。

    • 问题内容: 我需要使用JSON发送日期。日期字符串应如下所示: “ 2013/5/15” 而是按以下方式对其进行转义: “ 2013 \ / 5 \ / 15” 我知道这样做是为了允许在scripts标记内包含json字符串,因为此问题解释了: JSON:为什么要转义正斜杠? 但就我而言,我不需要它。实际上,服务器正在返回错误。服务器没有处理此问题,因此我无法修复该服务器,因此必须在移动客户端代码