Поиск:

Ответ в темуСоздание новой темы Создание опроса
> libCURL 
V
    Опции темы
shutffl
  Дата 9.9.2009, 05:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 18.8.2008

Репутация: нет
Всего: 3



Доброго времени суток !

Чуть более года назад поднимал примерно такую же тему,  но так никакого ответа и не получил. На днях снова решил подзаморочиться на тему написания бота под online игрушку. В этот раз решил попробовать libCURL. GUI будет написан на wxWidgets - подразобраться надо будет еще, конечно. Но сейчас возникло два вопроса:
  •  Будет ли работать нормально связка wxHtmlWindow и libCURL? То есть работаю я с игрушкой по средствам libCURL, а результат(обычный HTML) уже просто отображаю в wxHtmlWindow.
  •  Как справиться с POST-авторизацией? Чего тут никак не могу понять в чем проблема.

По второму вопросу привожу свой полный исходник:
Код

#include <stdio.h>
#include <stdlib.h>

#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>

int main(int argc, char **arhv){
    CURL        *curl;
    CURLcode    res;

    struct curl_httppost    *formpost=NULL;
    struct curl_httppost    *lastprt=NULL;
    struct curl_slist    *headerlist=NULL;
    static const char    buf[] = "Expect:";

    curl_global_init(CURL_GLOBAL_ALL);

    /*curl_formadd(    &formpost,
            &lastprt,
            CURLFORM_COPYNAME, "LOGIN_redirect",
            CURLFORM_COPYCONTENTS, "1",
            CURLFORM_END);*/
    
    curl_formadd(    &formpost,
            &lastprt,
            CURLFORM_COPYNAME, "login",
            CURLFORM_COPYCONTENTS, "тут логин",
            CURLFORM_END);
    
    curl_formadd(    &formpost,
            &lastprt,
            CURLFORM_COPYNAME, "pass",
            CURLFORM_COPYCONTENTS, "тут пароль",
            CURLFORM_END);
    
    curl = curl_easy_init();
    headerlist = curl_slist_append(headerlist, buf);
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "http://heroeswm.ru/login.php");
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
        curl_easy_setopt(curl, CURLOPT_HEADER, 0);
        curl_easy_setopt(curl, CURLOPT_USERAGENT, "User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.2) Gecko/20090804 Shiretoko/3.5.2");
        curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
        curl_easy_setopt(curl, CURLOPT_POSTREDIR, 1);
        curl_easy_setopt(curl, CURLOPT_VERBOSE, 0);
        curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
        res = curl_easy_perform(curl);
        printf("%i\n", res);
        curl_easy_cleanup(curl);
        curl_formfree(formpost);
        curl_easy_setopt(curl, CURLOPT_URL, "http://heroeswm.ru");
        curl_slist_free_all(headerlist);
    }

    return 0;
}


Компиляю так:
Код

gcc -L/usr/lib -lcurl -o test_curl.bin test_curl.c


Запустив бинарик, выводится код начальной страницы(запрос авторизации). res = 0.

Если изменить параметры хедеров и вербоса, то сообщения CURL будут такими:
Код

./test_curl.bin > 1.txt
* About to connect() to heroeswm.ru port 80 (#0)
*   Trying 69.42.209.42... * connected
* Connected to heroeswm.ru (69.42.209.42) port 80 (#0)
> POST /login.php HTTP/1.1
User-Agent: User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.2) Gecko/20090804 Shiretoko/3.5.2
Host: heroeswm.ru
Accept: */*
Content-Length: 248
Content-Type: multipart/form-data; boundary=----------------------------088ad3c92118

< HTTP/1.1 301 Moved Permanently
< Server: nginx
< Date: Wed, 09 Sep 2009 02:28:06 GMT
< Content-Type: text/html; charset=iso-8859-1
< Transfer-Encoding: chunked
< Connection: keep-alive
< Location: http://www.heroeswm.ru/login.php
< 
* Ignoring the response-body
* Connection #0 to host heroeswm.ru left intact
* Issue another request to this URL: 'http://www.heroeswm.ru/login.php'
* About to connect() to www.heroeswm.ru port 80 (#1)
*   Trying 69.42.209.42... * connected
* Connected to www.heroeswm.ru (69.42.209.42) port 80 (#1)
> POST /login.php HTTP/1.1
User-Agent: User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.2) Gecko/20090804 Shiretoko/3.5.2
Host: www.heroeswm.ru
Accept: */*
Content-Length: 248
Content-Type: multipart/form-data; boundary=----------------------------2a9d35b12510

< HTTP/1.1 302 Found
< Server: nginx
< Date: Wed, 09 Sep 2009 02:28:07 GMT
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: keep-alive
< Location: /
< 
* Ignoring the response-body
* Connection #1 to host www.heroeswm.ru left intact
* Issue another request to this URL: 'http://www.heroeswm.ru/'
* Violate RFC 2616/10.3.3 and switch from POST to GET
* Re-using existing connection! (#1) with host www.heroeswm.ru
* Connected to www.heroeswm.ru (69.42.209.42) port 80 (#1)
> GET / HTTP/1.1
User-Agent: User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.2) Gecko/20090804 Shiretoko/3.5.2
Host: www.heroeswm.ru
Accept: */*

< HTTP/1.1 200 OK
< Server: nginx
< Date: Wed, 09 Sep 2009 02:28:07 GMT
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: keep-alive
< 
* Connection #1 to host www.heroeswm.ru left intact
* Closing connection #0
* Closing connection #1


Что я делаю не так?

Заранее спасибо!
--------------------
shadowmoon
PM MAIL   Вверх
t_rex
Дата 9.9.2009, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 11.10.2006
Где: Украина, г. Запор ожье

Репутация: 2
Всего: 7



Цитата

Будет ли работать нормально связка wxHtmlWindow и libCURL?

Не будет. wxHtmlWindow не для этого, он ограниченный... очень. Рендерит все руками поэтому "все плохо, мы все умрем" (с). Смотри лучше на wxWebConnect - ничего так штука.
wxCurl - да, работает, но надо уметь собрать
Цитата

Как справиться с POST-авторизацией? Чего тут никак не могу понять в чем проблема.

Подозреваю что что-то с куками. В свое время намучался с автоматизацией админки вордпресса, поєтому большой шанс того что что-то с куками. В браузере в FF посмотри что сайт тебе сохраняет в куках. Может что-то на ум прийдет
--------------------
Жизнь не MultiEdit. Undo не сделаешьКросс-платформенное программирование с wxWidgetsБлог о программировании для мобильных устройтсвGoogle Android для программистов и пользователей
PM MAIL WWW ICQ Skype GTalk   Вверх
shutffl
Дата 11.9.2009, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 18.8.2008

Репутация: нет
Всего: 3



Спасибо за ответ.

wxCurl собрался нормально и нормально же работает - уже проверял все с тем же несчастным wxHtmlWindow.

Зато вот wxWebConnect как-то криво тестовое приложение заработало. Пришлось и оба Makefile править заодно. Потом скомпилили и libwebconnect.a, и testapp. Был там какой-то warning на счет wxString::Format в функции скачивания, но не особо критичный, судя по коду. Запускаю тестовое приложение, окошко отрисовалось, но никуда не ходит. А при закрытии вылетает с GNOME Debug. Буду ковырять дальше.
--------------------
shadowmoon
PM MAIL   Вверх
shutffl
Дата 11.9.2009, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 18.8.2008

Репутация: нет
Всего: 3



А что скажите на счет wxWebKit? Или все таки лучше wxWebConnect использовать??
--------------------
shadowmoon
PM MAIL   Вверх
andrew_121
Дата 11.9.2009, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



Цитата(shutffl @  11.9.2009,  13:54 Найти цитируемый пост)
А что скажите на счет wxWebKit? Или все таки лучше wxWebConnect использовать?? 

Скажу что QtWebkit много круче.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
t_rex
Дата 11.9.2009, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 11.10.2006
Где: Украина, г. Запор ожье

Репутация: 2
Всего: 7



wxWebKit вроде под Win не собирается... а wxWebConnect - как правильно собрать с MinGW/GCC - смотри на форуме на http://kirix.com

--------------------
Жизнь не MultiEdit. Undo не сделаешьКросс-платформенное программирование с wxWidgetsБлог о программировании для мобильных устройтсвGoogle Android для программистов и пользователей
PM MAIL WWW ICQ Skype GTalk   Вверх
shutffl
Дата 14.9.2009, 06:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 18.8.2008

Репутация: нет
Всего: 3



Спасибо. Гляну. Отпишусь.

А вообще, народ, только у меня складывается такое впечетление, что нет ни одной нормальной (удобной, стабильной, действительно кроссплатформенной, ..) библиотеки?? Или я просто гоню?? Или у нас для этих целей есть только обертки Qt и их лицензия для коммерческого использования. Хочется как-то все же на C/C++ писать, а не на кучке оберток/макросов.
--------------------
shadowmoon
PM MAIL   Вверх
SABROG
Дата 14.9.2009, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(shutffl @  14.9.2009,  06:27 Найти цитируемый пост)
только у меня складывается такое впечетление

Да.

Цитата(shutffl @  14.9.2009,  06:27 Найти цитируемый пост)
нет ни одной нормальной (удобной, стабильной, действительно кроссплатформенной, ..) библиотеки??

удобная и действительно кроссплатформенная есть. А стабильность колеблется туда сюда у любой библиотеки в той или иной степени.

Цитата(shutffl @  14.9.2009,  06:27 Найти цитируемый пост)
только обертки Qt

Обертки? Любую x-platform библиотеку возьми и это будет своего рода обертка. Общего API всех ОС не существует.

Цитата(shutffl @  14.9.2009,  06:27 Найти цитируемый пост)
и их лицензия для коммерческого использования

Откуда такая информация, что у библиотеки есть лицензия только для коммерческого использования?

Цитата(shutffl @  14.9.2009,  06:27 Найти цитируемый пост)
а не на кучке оберток/макросов

На той библиотеки, на которой я пишу, я не помню активного использования макросов мной. Они там нужны только для того, чтобы дать команду компилятору.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
shutffl
Дата 14.9.2009, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 18.8.2008

Репутация: нет
Всего: 3



Цитата(SABROG @  14.9.2009,  08:29 Найти цитируемый пост)
Откуда такая информация, что у библиотеки есть лицензия только для коммерческого использования?

Нет, я не имел ввиду только коммерческую составляющую, есть еще LGPL. Но мне иногда приходится писать закрытый код именно с коммерческими целями. А у Qt с этим туговато.


Цитата(SABROG @  14.9.2009,  08:29 Найти цитируемый пост)
На той библиотеки, на которой я пишу, я не помню активного использования макросов мной. Они там нужны только для того, чтобы дать команду компилятору. 

А так же, чтобы исходник через MOC протощить через компилятор заодно.. А это уже смахивает на Borland C++ Builder как минимум третьей версии. Если что еще у них выходило - я не в курсе. Там же тупо транслятор C++ в PAS и компиляция. А потом траблы с запуском, памятью и подобным.
А ту библиотеку я использовал. Да, не спорю, удобно, достаточно просто и документированно. Но! От программиста скрывается сама суть его программы. Вот я и выбираю между той, GTK и wxWidgets. И все три не особо устраивают. И, видимо, придется просто заткнуть свое самолюбие и карячится с обертками. Кстати, SABROG, LGPL же позволяет писать закрытый код, если нет модификации самой библиотеки.. Но ведь итоговый продукт получается написанным с использованием LGPL средств.. А значит тоже же должен быль LGPL.. Или я с GPL путаю??

Добавлено через 9 минут и 41 секунду
Ладно.. После очередного загона и старта холивара, а так же еще дополнительного сравнения.. Qt реально лучше выходит.. А на счет коммерческого использования Qt LGPL - вопрос остается в силе.. Много уже в Инете перечитал на эту тему.. Если можно, расскажите конкретнее..

Спасибо..

Добавлено через 11 минут и 16 секунд
Хм.. А давно они добавили "Can create proprietary application" к обеим лицензиям? Или я просто только что прозрел??
--------------------
shadowmoon
PM MAIL   Вверх
shutffl
Дата 4.10.2009, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 18.8.2008

Репутация: нет
Всего: 3



Вопрос решился добавлением CURLOPT_COOKIEJAR и CURLOPT_COOKIEFILE. Страница не грузилась из-за невлюченной работы с cookies.
--------------------
shadowmoon
PM MAIL   Вверх
just_geek
Дата 5.10.2009, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 309
Регистрация: 13.12.2007

Репутация: 7
Всего: 10



[offtop]
Цитата

Ладно.. После очередного загона и старта холивара, а так же еще дополнительного сравнения.. Qt реально лучше выходит.. А на счет коммерческого использования Qt LGPL - вопрос остается в силе.. Много уже в Инете перечитал на эту тему.. Если можно, расскажите конкретнее..

При использовании LGPL ты можешь спокойно продавать программу, не раскрывая исходников. Только одно ограничние: библиотека должна быть слинкована динамически.
[/offtop]
А libcurl хорошая библиотека smile
PM MAIL   Вверх
shutffl
Дата 7.10.2009, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 18.8.2008

Репутация: нет
Всего: 3



Угу.. Пишу бота для игрухи.. Уже оценил..
--------------------
shadowmoon
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0534 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.