gpt4 book ai didi

c++ - C++ REST SDK 中的 URI 编码 ("Casablanca")

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:47:04 27 4
gpt4 key购买 nike

我正在使用 C++ REST SDK 的 http 监听器2.8 并注意到以下内容。如果我向此监听器发送以下 URL:

http://my_server/my%2fpath?key=xxx%26yyy%3Dzzz

我这样做:

auto uri = request.relative_uri();
auto v_path_components = web::uri::split_path(web::uri::decode(uri.path()));
auto m_query_components = web::uri::split_query(web::uri::decode(uri.query()));

然后我发现 v_path_components 包含 2 个元素 ["my", "path"],而 m_query_components 包含 2 个对 [("key","xxx") , ("yyy","zzz")].

我想要并且期望的是 v_path_components 包含 1 个元素 ["my/path"],而 m_query_components 包含 1 对 [("key", "xxx&yyy=zzz")].

为了实现后者,relative_uri 不应解码/编码 uri,因为那样会丢失信息。此外,web::uri::decode() 应该在拆分结果上执行,而不是在拆分之前执行。但是,由于 REST SDK 本身以及它附带的许多示例以上述方式使用它,这让我相信我可能是错的。

谁能证实我的发现或解释为什么我走错了路?

最佳答案

您的发现很有意义。

由于您首先进行解码,因此编码后的符号 (%3D) 成为键/值对分隔符。路径组件相同。斜杠 (%2f) 成为路径分隔符,并按此解析。

关于c++ - C++ REST SDK 中的 URI 编码 ("Casablanca"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36364375/

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