gpt4 book ai didi

java - 带有感叹号的 Uribuilder 编码

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:23:56 32 4
gpt4 key购买 nike

我正在尝试使用 Uribuilder 来自:

javax.ws.rs.core.UriBuilder;

更新 URI。问题是当我使用 replaceQueryParam 时参数名称被转义。

所以:

UriBuilder uriBuilder = webResource.getUriBuilder().
replaceQueryParam("abcd!dcv, "wid").
replaceQueryParam("format", "json");

如果 Uribuilder 中已经存在一个现有的“abcd!dcv”参数,它将转义并添加一个新参数。所以它会变成

?abcd!dcv=originalvalue&abcd%21cdv=wid

代替

?abcd!dcv=wid

我应该如何解决这个问题?谢谢!

最佳答案

URIBuilder 是一个抽象类,实现决定哪些字符需要特殊编码,哪些不需要。我们从 WebResource 获得的 URIBuilder 试图遵循 RFC 3986 的指导方针.在第 12 页,! 被列为子分隔符,这就是它被编码的原因。从我对 RFC 的阅读来看,我认为我们不应该使用 !作为查询参数的一部分。例如,Vaading 使用 !区分同一应用程序的子窗口。

我能想到的最简单的解决方法就是不使用 URIBuilder 或使用将字符串作为输入的 fromURI 方法。您可以使用除我们不想编码的字符部分以外的所有内容创建 URI,将其转换为 astring,操作 astring 以替换查询参数,然后调用 URIBuilder.fromURI(aString)

关于java - 带有感叹号的 Uribuilder 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24924219/

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