在卡萨布兰卡形成编码参数的列表

List to form-encoded parameters in Casablanca

本文关键字:参数 列表 编码 卡萨布兰卡      更新时间:2023-10-16

我正在使用cpprestsdk(casabalanca(将请求POST到服务器我有一个参数清单

std::list<std::pair<string, string>> query;
query.push_back(std::make_pair("val1", "one two"));
query.push_back(std::make_pair("val2", "yo"));

其需要被编码为CCD_ 1。

val1=one%20two&val2=yo

问题是我找不到一个Api来做这件事(就像我有一个json负载的web::json::value一样(。我需要对每个键/值进行编码,并自己进行连接。我错过了一个Api,或者根本不存在

找到解决方案。。。

web::http::http_request request;
web::uri_builder parameter;
parameter.append_query("val1", "one two", true);
parameter.append_query("val2", "yo", true);
request.set_body(parameter.query(), web::http::details::mime_types::application_x_www_form_urlencoded);

您可以使用std::list并填写查询参数

std::string test_url("http://127.0.0.1:9044/api/v1/somepath/");
web::uri_builder ub(test_url);            
std::list<std::pair<std::string, std::string>> query;
query.push_back(std::make_pair("val1", "one two"));
query.push_back(std::make_pair("val2", "yo"));

for(auto const &it: query)
{
std::cout<<it.first<<" : "<<it.second<<std::endl;
ub.append_query(it.first, it.second);
}
std::string uri_builder_str = ub.to_string();
http_client client(uri_builder_str);
std::cout<<uri_builder_str<<std::endl;
return client.request(methods::GET);