在c ++中向libcurl GET添加参数

时间:2013-10-25 06:43:20

标签: c++ libcurl

我想使用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做类似的事情?

2 个答案:

答案 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&param2=value2

参考

[1] https://curl.haxx.se/libcurl/c/curl_url_set.html