我想使用c ++在变量中向HTTP GET添加一些额外的数据。当我使用HTTP POST发出请求时,我会这样做:
curl_easy_setopt(curl, CURLOPT_URL, path);
curl_formadd(&beginPostList, &endPostList, CURLFORM_COPYNAME, "variable1", CURLFORM_COPYCONTENTS, variable1.c_str(), CURLFORM_END);
curl_formadd(&beginPostList, &endPostList, CURLFORM_COPYNAME, "variable2", CURLFORM_COPYCONTENTS, variable2.c_str(), CURLFORM_END);
curl_formadd(&beginPostList, &endPostList, CURLFORM_COPYNAME, "variable3", CURLFORM_COPYCONTENTS, variable3.c_str(), CURLFORM_END);
curl_easy_setopt(curl, CURLOPT_POST, true);
curl_easy_setopt(curl, CURLOPT_HTTPPOST, beginPostList);
但是如何使用GET methid做类似的事情?
答案 0 :(得分:1)
对于GET
,只需将参数附加到网址,例如
http://some.host.com/some/path?variable1=value1&variable2=value2
我相信你以前见过它!
答案 1 :(得分:0)
现在存在对此的一些支持(自curl版本7.62起)。 '?'
和'&'
是自动添加的,但是我目前看不到分别添加参数和值的方法,因此仍然必须使用它们之间的'='
来创建它们。
// Create URL
CURLUcode result;
CURLU *url = curl_url();
char *urlStr;
result = curl_url_set(url, CURLUPART_URL, "https://example.com/hello.json", 0);
if(!result) {
const char paramValue1[] = "param1=value1";
const char paramValue2[] = "param2=value2";
// Add paramters
result = curl_url_set(url, CURLUPART_QUERY, paramValue1, CURLU_APPENDQUERY);
result = curl_url_set(url, CURLUPART_QUERY, paramValue2, CURLU_APPENDQUERY);
// Convert URL to string for printing
result = curl_url_get(url, CURLUPART_URL, &urlStr, 0);
printf("New URL: %s", urlStr);
}
curl_url_cleanup(url);
// Output: New URL: https://example.com/hello.json?param1=value1¶m2=value2
参考