Кажется, я не могу использовать переменную в качестве аргумента сообщения для 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;}
0
Jobine23 22 Сен 2018 в 05:06

1 ответ

Лучший ответ
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, ...);

Не принимает std::string в качестве третьего параметра, а принимает указатель на char, поэтому вы должны передать его data.c_str() и надеяться, что curl_easy_setup() не будет пытаться изменить данные, поскольку { {X4}} возвращает char const *.

2
Swordfish 22 Сен 2018 в 02:14