无法使用Poco获取路径字符串:getPathAndQuery返回空值问题
解决Poco::URI getPathAndQuery()返回空字符串的问题
兄弟,你这问题的核心其实是对URI结构和Poco::URI的方法理解有点小偏差!你的URI
http://10.10.10.10:3535本身没有路径和查询参数,所以getPathAndQuery()返回空是完全符合预期的!回忆下标准URI的结构:
scheme://host:port/path?query,其中/path?query这部分才是getPathAndQuery()要获取的内容。你当前的URI只有协议、主机和端口,后面啥都没有,自然返回空字符串。给你两个实用的解决方向:
- 如果需要获取根路径(
/):
调用Poco::URI的normalize()方法标准化URI,它会自动给无路径的URI补充根路径:Poco::URI uri("http://10.10.10.10:3535"); uri.normalize(); // 标准化后,URI会被处理为http://10.10.10.10:3535/ std::string path(uri.getPathAndQuery()); // 此时path的值为"/" - 如果你的URI本该带路径/查询参数:
确保构造URI时包含完整的路径部分,比如:// 带根路径的URI Poco::URI uri("http://10.10.10.10:3535/"); std::string path(uri.getPathAndQuery()); // 返回"/" // 带具体路径和查询参数的URI Poco::URI uri2("http://10.10.10.10:3535/api/v1/user?id=100"); std::string path2(uri2.getPathAndQuery()); // 返回"/api/v1/user?id=100"
- 如果需要获取根路径(
补充一句:你提到的示例代码里,应该是用了带有路径的URI,所以能获取到内容。估计你是简化了自己的URI,才导致出现返回空的情况~
内容的提问来源于stack exchange,提问作者Preben Enhed
相关产品推荐
相关产品推荐

