Здраствуйте! Отправляю GET запрос на сервер так: Code: #include <iostream> #include <string.h> #include <curl/curl.h> using namespace std; static int writer(char *data, size_t size, size_t nmemb,std::string *buffer) { int result = 0; if (buffer != NULL) { buffer->append(data, size * nmemb); result = size * nmemb; } return result; } int main(int argc, char* argv[]) { // cout<<(*argv)<<endl; string patch_to_programm = *argv; patch_to_programm = patch_to_programm + "/"; string urls = "http://depositfiles.com/files/dq94choda"; string uagent = "User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.43 Safari/532.5"; string reffer ="Referer: http://vkontakte.ru/away.php?to=http%3A%2F%2Fdepositfiles.com%2Ffiles%2Fdq94choda"; CURL *curl1; CURLcode result; string buffer; curl_global_init(CURL_GLOBAL_ALL); cout << "Заход на сайт... " << urls << endl; curl_slist *slist1=NULL; slist1 = curl_slist_append(slist1, uagent.c_str()); slist1 = curl_slist_append(slist1, reffer.c_str()); slist1 = curl_slist_append(slist1, "Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"); slist1 = curl_slist_append(slist1, "Accept-Encoding: gzip,deflate"); slist1 = curl_slist_append(slist1, "Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4"); slist1 = curl_slist_append(slist1, "Accept-Charset: UTF-8,*;q=0.5"); curl1 = curl_easy_init(); curl_easy_setopt(curl1, CURLOPT_URL, urls.c_str()); curl_easy_setopt(curl1, CURLOPT_HEADER, 0); curl_easy_setopt(curl1, CURLOPT_FOLLOWLOCATION, 1); curl_easy_setopt(curl1, CURLOPT_COOKIEJAR, (patch_to_programm +"cookiefile.1").c_str()); curl_easy_setopt(curl1, CURLOPT_COOKIEFILE,(patch_to_programm +"cookiefile.1").c_str()); curl_easy_setopt(curl1, CURLOPT_HTTPHEADER, slist1); curl_easy_setopt(curl1, CURLOPT_WRITEFUNCTION, writer); curl_easy_setopt(curl1, CURLOPT_WRITEDATA, &buffer); result = curl_easy_perform(curl1); cout<<buffer<<endl; return 0; } Возникает 2 вопроса: 1)Как перевести ответ в читабельные вид (в норм кодировку)? 2)И почему не создается файл с кукисами в папке с программой? Заранее огромное спасибо! OS ubuntu 9.10 x64 codebloks
>1)Как перевести ответ в читабельные вид (в норм кодировку)? Вместо: curl_slist_append(slist1, "Accept-Encoding: gzip,deflate"); попробуй: curl_easy_setopt(curl, CURLOPT_ENCODING, "gzip,deflate"); если curl собран с zlib, то он сам будет распаковывать ответ. >2)И почему не создается файл с кукисами в папке с программой? потому в argv[0] содержится имя исполняемого файла, в результате путь получается: "aaa.exe/cookiefile.1" Если тебе реально НЕ нужно хранить куки в файле, то лучше использовать: curl_easy_setopt(curl, CURLOPT_COOKIELIST, ""); в этом случае курл будет сам с ними управляться.
Ты что, на каждый запрос новый курл создаёшь? Вообще нужно создавать один и его использовать на все запросы, в нём будут храниться и куки и всё прочее.
Я побывал с одним мне постоянно ошибку сегментации выдавало Там же надо все опции сбрасывать и ставить по новому я использовал Code: curl_easy_reset() вот после этого и вываливается ошибка!
Не нужно опции сбрасывать, достаточно просто делать новый curl_easy_setopt того что нужно поменять в запросе. Переключение между гет и пост запросом: CURLOPT_HTTPGET и CURLOPT_POST Что касается сегфолта, то это ты сам что то покоцал.