1

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

4

2 回答 2

1

GET只需将参数附加到 URL,例如

http://some.host.com/some/path?variable1=value1&variable2=value2

我敢肯定你以前见过!

于 2013-10-25T06:45:40.430 回答
1

现在存在对此的一些支持(从 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

于 2019-04-05T12:39:29.100 回答