【问题标题】:URL encoding issue for path param which has '/'具有“/”的路径参数的 URL 编码问题
【发布时间】:2018-10-31 20:30:00
【问题描述】:

我在对 URL 进行编码时遇到问题。我的 url 可能包含一个路径参数,其中可以包含一个斜杠“/”。我需要将此路径参数发送到外部 API。这始终是加密+编码的。但我在编码'/'时遇到问题。除了 '/' 之外,其他的都是编码。

例子:

https://url.com/bdvchewcbwj%2Fhbsdwhjkbq%3D

在上面的例子中,没有编码的路径参数是:

bdvchewcbwj/hbsdwhjkbq=

当我对上述路径参数进行编码时,我期望 url 为:

https://url.com/bdvchewcbwj%2Fhbsdwhjkbq%3D

但结果是:

bdvchewcbwj/hbsdwhjkb%3D

输入:

https://url.com/bdvchewcbwj/hbsdwhjkbq%3D

预期输出:

https://url.com/bdvchewcbwj%2Fhbsdwhjkbq%3D

我正在使用 okHttp 客户端来创建请求。是否有任何库只对未编码的字符进行编码而留下已编码的字符?

【问题讨论】:

    标签: java urlencode


    【解决方案1】:

    如何对参数进行编码?对我来说

    URLEncoder.encode("bdvchewcbwj/hbsdwhjkbq=","UTF-8");
    

    按预期工作,结果是

    bdvchewcbwj%2Fhbsdwhjkbq%3D
    

    【讨论】:

    • 不。那不是我要编码的内容。您正在尝试对尚未编码值的字符串进行编码。在我的情况下,最后一个“=”已经编码,而“/”保持未编码。 URLEncoder.encode("bdvchewcbwj/hbsdwhjkbq%3D","UTF-8"); “bdvchewcbwj%2Fhbsdwhjkbq%3D”是我需要的
    • 这个问题完全不清楚。 >.. 上面的例子:bdvchewcbwj/hbsdwhjkbq=,当我对上面的路径参数进行编码时,我期望url为:bdvchewcbwj%2Fhbsdwhjkbq%3D,但结果是:bdvchewcbwj/hbsdwhjkb%3D
    • 在我的例子中,最后一个 '=' 已经编码,而 '/' 仍未编码你是如何做到的?我认为这是一个主要问题。如果bdvchewcbwj/hbsdwhjkbq= 是一个实心参数,而不是串联的结果或类似的东西,那么它应该被完整编码或根本不编码
    • @ging 我很困惑。在您的问题中,您没有声明您有一个输入字符串,其中一些但不是所有不安全的字符都是 URL 编码的。
    • @VGR YuriyTsarkov 用预期的输入和输出更新了问题。
    猜你喜欢
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 2016-05-19
    • 1970-01-01
    • 2016-04-16
    • 2019-10-25
    • 1970-01-01
    相关资源
    最近更新 更多