Как мне получить ответные куки через curlpp? - PullRequest
3 голосов
/ 05 декабря 2010

как я могу получить ответные куки-файлы из запроса curlpp?

Я хочу сохранить сеанс PHP вне запроса HTTP GET.Это мой текущий код:

void Grooveshark::Connection::processPHPCookie()
{
    std::ostringstream buffer;

    gsDebug("Processing PHP cookie...");

    try {
        request.setOpt<cURLpp::Options::Url>("http://listen.grooveshark.com");
        request.setOpt<cURLpp::Options::WriteStream>(&buffer);
        request.perform();

        // Get the PHP Session cookie here..

    } catch (cURLpp::LogicError& exception) {
        gsError(exception.what());
    } catch (cURLpp::RuntimeError& exception) {
        gsError(exception.what());
    }

    gsDebug("Processing complete...");
}

request - это экземпляр cURLpp::Easy.Если вам нужна дополнительная информация, вы можете найти мой исходный код здесь

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

Ссылка на предыдущие ответы теперь находится по адресу: https://github.com/datacratic/curlpp/blob/master/examples/example07.cpp

Следует отметить, что если кто-то хочет просто получить ответы на cookie, он должен передать пустую строку в списки cookie.

Для предыдущего примера необходимо добавить exEasy.setOpt(new curlpp::options::CookieList("")), чтобы получить строки cookie (возможно, использовалось что-то кроме пустой строки, но я не смог найти дополнительную документацию).

0 голосов
/ 26 марта 2013

https://bitbucket.org/moriarty/curlpp/src/ac658073c87a/examples/example07.cpp

Этот пример, кажется, имеет то, что вы хотите. В частности этот код:

std::cout << "\nCookies from cookie engine:" << std::endl;
std::list<std::string> cookies;
curlpp::infos::CookieList::get(exEasy, cookies);
int i = 1;
for (std::list<std::string>::const_iterator it = cookies.begin(); it != cookies.end(); ++it, i++)
{
    std::cout << "[" << i << "]: " << MakeCookie(*it) << std::endl;
}

Обратите внимание, что MakeCookie возвращает структуру MyCookie внутри примера, поэтому вам также потребуется:

struct MyCookie
{
        std::string name;
        std::string value;
        std::string domain;
        std::string path;
        time_t expires;
        bool tail;
        bool secure;
};

MyCookie
MakeCookie(const std::string &str_cookie)
{
        std::vector<std::string> vC = splitCookieStr(str_cookie);
        MyCookie cook;

        cook.domain = vC[0];
        cook.tail = vC[1] == "TRUE";
        cook.path = vC[2];
        cook.secure = vC[3] == "TRUE";
        cook.expires = StrToInt(vC[4]);
        cook.name = vC[5];
        cook.value = vC[6];

        return cook;
}
...