Russian Qt Forum

Qt => Работа с сетью => Тема начата: aut0mat от Январь 14, 2011, 15:53



Название: Curl [Linux]
Отправлено: aut0mat от Январь 14, 2011, 15:53
Не подскажите как подключить CURL к проекту Qt?
OS: Linux Mint


Название: Re: Curl [Linux]
Отправлено: Stiff от Январь 18, 2011, 21:14
Для начала apt-get install libcurl-dev
В сырцах #include <curl/curl.h>
В .pro файле LIBS += curl


Название: Re: Curl [Linux]
Отправлено: aut0mat от Январь 21, 2011, 14:35
Спасибо, получилось.
Возникли некоторые проблемы с курлом:
Пиши софтинку с веб авторизацией пытають использовать курл так:
Код:
curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, "http://bla-bla-bla.ru/login/");
curl_easy_setopt(curl, CURLOPT_POST, 1);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "login=" + login + &pass=" + password);
Но после установки CURLOPT_POSTFIELDS программа вылетает
Код:
Программа неожиданно завершилась.
Как я понимаю запрос нужно составлять как-то иначе, но как?
Add: При компилировании выдаёт предупреждение:
Код:
warning: cannot pass objects of non-POD type ‘class QString’ through ‘...’; call will abort at runtime


Название: Re: Curl [Linux]
Отправлено: aut0mat от Январь 21, 2011, 15:31
Проблема была решена.


Название: Re: Curl [Linux]
Отправлено: Юрий Гирин от Июль 04, 2011, 20:25
Если не секрет, подскажите, как?


Название: Re: Curl [Linux]
Отправлено: twp от Июль 04, 2011, 22:04
могу предположить что исходя из текста сообщения компилятора, проблема была в этой строке:
Код:
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "login=" + login + "pass=" + password);
т.е. передача не POD типа QString в функцию с переменным числом параметров. Чтобы это исправить, достаточно передать как const char * например так:

Код:
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, qPrintable("login=" + login + "pass=" + password));