gpt4 book ai didi

c++ - 使用 C++ 中的预定义变量发出 cURL GET 请求

转载 作者:行者123 更新时间:2023-11-28 01:40:48 25 4
gpt4 key购买 nike

我目前正在 macOS 上编写一个 C++ 程序,它要求我们从用户那里获取两个变量,即 HWID 和 IP 地址,并像这样在获取请求中使用它们;

CURL* curl;
string result;

curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, "website.com/c.php?ip=" + ip + "&hwid=" + hwid);

hwidip 是这样定义的;

auto hwid = al.exec("ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformUUID/ { print $3; }'");

auto ip = al.exec("dig +short myip.opendns.com @resolver1.opendns.com.");

请记住,al.exec 只是一个执行并返回终端命令输出的函数。

然而,执行所有这些操作的问题是,我为参数提供了不正确的 curl_easy_setopt 类型……我在像前面的示例一样发出 GET 请求时遇到了这些错误;

Cannot pass object of non-trivial type 'basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >' through variadic function; call will abort at runtime

如有任何帮助,我们将不胜感激。

最佳答案

cURL 库是一个 C 库,它的所有函数都是 C 函数。因此它们无法处理像 std::string 这样的对象。当你执行 "website.com/c.php?ip="+ ip + "&hwid="+ hwid 时,结果 std::string 对象。

解决它的一种方法是将 "website.com/c.php?ip="+ ip + "&hwid="+ hwid 的结果保存在一个变量中,然后使用它变量与 c_str获取 C 风格字符串的函数:

std::string url = "website.com/c.php?ip=" + ip + "&hwid=" + hwid;
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());

关于c++ - 使用 C++ 中的预定义变量发出 cURL GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47247616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com