在使用代码组装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("\\"