我是C ++开发的新手,我一直在尝试使用libcurl。
我基本上正在寻找一个函数,让我输入类似于curl中-d标志的参数。
例如,如果我只是直接在curl中发送网址请求,或者在网络浏览器中网址看起来像“https://www.example.com/hello.json?whoisawesome=me&whosucks=yomomma”
然后我怎么能把它作为libcurl提供给它而不仅仅是这个问题的接受答案中建议的一个网址: Add paramethers to libcurl GET in c++
但作为我可以添加的参数?我希望这个电话会自动“清理”文本(例如,支持符号中的符号(&)和等号(=)。我确定还有其他情况,但这是我能想到的唯一一个现在)。当然我可以创建一个自己清理字符串的函数,但我想知道libcurl中是否有一个内置函数。
我检查了api文档,但我认为我不够熟悉,无法成功浏览它以找到我需要的内容。
感谢您的时间
答案 0 :(得分:3)
答案 1 :(得分:1)
你做不到。您需要指定完整的URL,这意味着它不仅包含服务器名称,还包含架构,路径,端口和查询(即您的GET参数)。我认为这是唯一没有这种做法的方式。
答案 2 :(得分:1)
我只是在C ++ 11中使用这样的东西:
typedef std::map<std::string, std::string> Params;
static std::string params_string(Params const ¶ms)
{
if(params.empty()) return "";
Params::const_iterator pb= params.cbegin(), pe= params.cend();
std::string data= pb-> first+ "="+ pb-> second;
++ pb; if(pb== pe) return data;
for(; pb!= pe; ++ pb)
data+= "&"+ pb-> first+ "="+ pb-> second;
return data;
}
// ...
auto str= get("where.com?"+ params_string({ {"q", "C++"}, { "img", "true" } }));
// lets you write pretty API clients