Пользовательский ввод для запроса скручивания - PullRequest
0 голосов
/ 22 сентября 2018

Кажется, я не могу использовать переменную для в качестве аргумента post для curl.Я не могу понять, почему это не работает.Я попытался напечатать переменную, и переменная была в точности такой, какой я хочу ... Если я укажу непосредственно в качестве аргумента: "useremail = testuser & password = lol123 & action = login & запомнить = запомнить";он работает нормально, но я хочу использовать пользовательскую переменную ввода ...

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 Ответ

0 голосов
/ 22 сентября 2018
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, ...);

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

...