libcurl C++添加 HTTP get 参数
libcurl C++ adding http get parameters
我是C++开发的新手,我一直在尝试使用libcurl。
我基本上正在寻找一个函数,让我输入类似于 curl 中 -d 标志的参数。
例如,如果我只是直接在 curl 或 Web 浏览器中发送 url 请求,则 url 看起来像"https://www.example.com/hello.json?whoisawesome=me&whosucks=yomomma"
那么我怎么能把它提供给 libcurl,而不是像这个问题的接受答案中建议的那样只是一个 URL:在 c++ 中将参数添加到 libcurl GET 中
但作为我可以添加的参数?我希望调用会自动"清理"文本(例如,在字符串中支持与号 (&) 和等号 (=)。我敢肯定还有其他情况,但这是我目前能想到的唯一情况)。当然,我可以自己创建一个清理字符串的函数,但我想知道libcurl中是否内置了一个函数。
我检查了 api 文档,但我觉得我不够熟悉,无法成功导航它以找到我需要的东西。
感谢您抽出宝贵时间
- 如前所述,包含GET参数的完整URL必须手动构建。
- 健全性检查,如剥离前导或尾随空格,不是 libcurl 的责任。
- 若要对参数的(净化)值部分进行 URL 编码,您可以使用curl_easy_escape。无论如何,关键部分应该在你手中。
你不能。您需要指定完整的 url,这意味着它不仅包含服务器名称,还包含架构、路径、端口和查询(即您的 GET 参数)。我认为这是唯一不疯狂的方式。
我只是在 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
相关文章:
- c++程序,在windows下发送带有参数的http get请求
- C++11: 如何编写一个像 Get 一样工作的模板函数<tuple>...但是收到参数包?
- C++:传递像 unique_ptr:get() 这样的参数来函数是否安全?
- clang::ast_type_traits::D ynTypedNode::get() 无法推断模板参数'T'
- friend get 函数,返回通过可变参数模板递归计算的类型
- 在C++中编写简单的 get/set 方法时,是否应始终使用 const 引用作为参数
- ifstream 函数"get"如何改变其字符参数?
- 使用C++获取HTTP get参数
- 使用 std::get 作为 std::transform 的参数
- libcurl C++添加 HTTP get 参数
- std::get 使用枚举类作为模板参数
- 带有参数的 HTTP GET 请求
- 如何使用object.get()将文本读取到一个参数比文本大的2D数组中(2D数组有更多的行和列)
- 为什么std::get使用模板参数而不是常规参数
- 使用带有参数cin.get()或.geline()的函数调用
- 基于不断变化的参数/变量的XML get值
- std::get<I>( std::tuple& ) 作为模板参数
- 使用可变参数模板实现 Get (元组) 得到"parameter packs not expanded with ‘...’"错误
- 我如何将参数传递给qnetworkrequest get方法
- 如何解析POST主体/ GET参数