【C++】在使用代码组装URL时,一定要注意的坑......

简介: 【C++】在使用代码组装URL时,一定要注意的坑......

在使用代码组装URL时,一定要注意URL中的特殊字符。某些特殊字符的存在,在传输之后会切断你的URL,导致你的访问链接变得不正确。

例如下面这个,我组装之后的链接形式:

最后的time字段是有个空格的。用这个链接去请求服务,一直返回错误。很苦恼。

后来,我用浏览器打开这个链接,可以获取到正确的数据。通过比较代码中的URL字符串和浏览器中的地址:

发现,字符串URL中的空格被自动替换成了%20。我也将代码中的URL中的空格替换成%20之后,代码也执行成功了。

所以,在代码中组装URL时,一定要注意里面的特殊字符。

我写了下面这个替换特殊字符的函数,可以直接用,防止URL中的特殊字符对代码造成大坑。

VVoid UrlEncode(const std::string& url, std::string& strTmpUrlPar)
{
    strTmpUrlPar= url;
    strTmpUrlPar.replace(",", "%2C");
    strTmpUrlPar.replace("\\", "%5C");
    strTmpUrlPar.replace("\"", "%22");
    strTmpUrlPar.replace(":", "%3A");
    strTmpUrlPar.replace("{", "%7B");
    strTmpUrlPar.replace("}", "%7D");
    strTmpUrlPar.replace("[", "%5B");
    strTmpUrlPar.replace("]", "%5D");
    strTmpUrlPar.replace("|", "%7C");
    strTmpUrlPar.replace(" ", "%20");
    strTmpUrlPar.replace("+", "%20");
    strTmpUrlPar.replace(";", "%3B");
    strTmpUrlPar.replace("!", "%21");
    strTmpUrlPar.replace("#", "%23");
    strTmpUrlPar.replace("$", "%24");
    strTmpUrlPar.replace("'", "%27");
    strTmpUrlPar.replace("(", "%28");
    strTmpUrlPar.replace(")", "%29");
    strTmpUrlPar.replace("*", "%2A");
    strTmpUrlPar.replace("/", "%2F");
    strTmpUrlPar.replace("?", "%3F");
    strTmpUrlPar.replace("@", "%40");
}
相关文章
|
10天前
|
算法 开发工具 计算机视觉
【零代码研发】OpenCV实验大师工作流引擎C++ SDK演示
【零代码研发】OpenCV实验大师工作流引擎C++ SDK演示
18 1
|
17天前
|
C++
C++代码的可读性与可维护性:技术探讨与实践
C++代码的可读性与可维护性:技术探讨与实践
18 1
|
4天前
|
C++ 编译器
【C++语言】Date类的代码实现(操作符重载运用)
【C++语言】Date类的代码实现(操作符重载运用)
|
4天前
|
C++
c++primer plus 6 读书笔记 第十四章 C++中的代码重用
c++primer plus 6 读书笔记 第十四章 C++中的代码重用
|
5天前
|
存储 API C语言
C/C++爱心代码
C/C++爱心代码
23 2
|
10天前
|
存储 人工智能 C++
【PTA】L1-064 估值一亿的AI核心代码(详C++)
【PTA】L1-064 估值一亿的AI核心代码(详C++)
11 1
|
19天前
|
存储 C语言 Python
从C语言到C++_24(二叉搜索树)概念+完整代码实现+笔试题(下)
从C语言到C++_24(二叉搜索树)概念+完整代码实现+笔试题
40 3
|
19天前
|
C语言
从C语言到C++_24(二叉搜索树)概念+完整代码实现+笔试题(中)
从C语言到C++_24(二叉搜索树)概念+完整代码实现+笔试题
16 1
|
19天前
|
算法 测试技术 C语言
从C语言到C++_24(二叉搜索树)概念+完整代码实现+笔试题(上)
从C语言到C++_24(二叉搜索树)概念+完整代码实现+笔试题
23 0
|
23天前
|
安全 算法 程序员
探索C++的魅力:语言特性、编程实践及代码示例
C++是广泛应用的编程语言,尤其在系统级编程、应用开发、游戏和嵌入式系统中广泛使用。其主要特性包括:面向对象编程(封装、继承、多态),泛型编程(通过模板实现代码复用和类型安全),以及丰富的标准库和第三方库。在编程实践中,需注意内存管理、异常处理和性能优化。示例代码展示了面向对象和泛型编程,如类的继承和泛型函数的使用。C++的内存管理和库支持使其在解决复杂问题时具有高效和灵活性。