Кажется, я не могу использовать переменную в качестве аргумента сообщения для curl. Я не могу понять, почему это не работает. Я попытался распечатать переменную, и она в точности такая, как я хочу ... Если я поставлю прямо в качестве аргумента: "useremail = testuser & password = lol123 & action = login & Remember = Remember"; он работает нормально, но я хочу использовать переменную ввода пользователя ...
int main(void){
CURL *curl;
CURLcode res;
std::string readBuffer;
std::string testinput;
std::cin >> testinput;
std::string data = "useremail=" + testinput + "&password=lol123&action=login&remember=remember";
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, "https://manager.domain.pro/api.php");
/* Now specify the POST data */
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
res = curl_easy_perform(curl);
std::cout << readBuffer << std::endl;
curl_easy_cleanup(curl);
}
return 0;}
1 ответ
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, ...);
Не принимает std::string
в качестве третьего параметра, а принимает указатель на char
, поэтому вы должны передать его data.c_str()
и надеяться, что curl_easy_setup()
не будет пытаться изменить данные, поскольку { {X4}} возвращает char const *
.
Похожие вопросы
Новые вопросы
c++
C ++ - это язык программирования общего назначения. Первоначально он был разработан как расширение C и имеет аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде (который должен быть) скомпилирован с помощью компилятора C ++. Используйте тег для конкретной версии для вопросов, связанных с конкретной версией стандарта [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] или [C ++ 23] и т. Д. .