Объединенная строка не работает для libCurl в C ++ - PullRequest
0 голосов
/ 06 февраля 2020

По сути, моя программа / код, который я сейчас использую, возвращает сообщение из скрипта PHP. У меня проблема, когда я даю ему объединенную строку для URL, она ничего не возвращает. Но когда я ввожу его вручную, он возвращает правильную информацию. Вот код, который я использую ниже:

std::string Login(std::string uname, std::string pass)
{
    CURL* curl;
    CURLcode res;
    std::string readBuffer;
    std::string path = "localhost/files/login.php?username=" + uname + "&password=" + pass;
    std::cout << uname << "  " << pass;
    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "localhost/files/login.php?username=123&password=123");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
        res = curl_easy_perform(curl);
        curl_easy_cleanup(curl);

        return readBuffer;
    }
    return "Failed";

}

Этот способ работает, потому что я ввожу URL-адрес вручную, но когда я делаю это, он ничего не возвращает:

std::string path = "localhost/files/login.php?username=" + uname + "&password=" + pass;

curl_easy_setopt(curl, CURLOPT_URL, path);

I Я не уверен, что я использую неправильную переменную или что-то еще. Я новичок в использовании PHP, libCurl и всего, что связано с сетью.

1 Ответ

1 голос
/ 06 февраля 2020

CURLOPT_URL ожидает в качестве ввода строковый указатель char* с нулевым символом в конце C в качестве ввода, а не std::string. Вы можете использовать метод std::string::c_str(), чтобы получить совместимый указатель const char* из std::string:

curl_easy_setopt(curl, CURLOPT_URL, path.c_str());
...