Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MacOSX и HTTP, как залогинится на сайт POST запросом? 
V
    Опции темы
tyko
Дата 16.1.2008, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



как залогинится на сайт POST запросом?
использую Carbon, желательно без Cocoa (если с ней с объясните, плиз, почему).
параметрами передаются три значения: логин, пароль, и версия.
три дня весь нет перерываю, ничего вразумительного найти не могу. 
PM MAIL   Вверх
archimed7592
Дата 16.1.2008, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



Смотря что понимать под "залогиниться" smile. К примеру, при залогинивании на данный форум при создании запроса не нужно передавать никаких логино-паролей.

Цитата(tyko @  16.1.2008,  15:07 Найти цитируемый пост)
параметрами передаются три значения: логин, пароль, и версия.

Куда передаются?


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
tyko
Дата 16.1.2008, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



не совсем понял...
имется страница с формой, где заполняются три вышеперечисленных поля и нажимается Submit.
Мне нужно это сделать програмно.

Добавлено через 1 минуту и 17 секунд
таким образом проверяю имеет ли пользователь свой акаунт...
PM MAIL   Вверх
tyko
Дата 16.1.2008, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



попробую сузить вопрос.
Первый запрос делаю методом GET, поулчаю ответ.
если кто-нибуть подскажет как из ответа севера вытащить значение PHPSESSID, то дальше я разберусь.
Как формировать POST разобрался.
PM MAIL   Вверх
tyko
Дата 17.1.2008, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот код
Код

...
    messageRef = CFHTTPMessageCreateRequest( kCFAllocatorDefault, CFSTR("GET"), urlRef, kCFHTTPVersion1_1 );
    if ( messageRef == NULL ) goto Bail;

    // Create the stream for the request.
    readStreamRef   = CFReadStreamCreateForHTTPRequest( kCFAllocatorDefault, messageRef );
    if ( readStreamRef == NULL ) goto Bail;
   
        if ( CFReadStreamSetProperty(readStreamRef, kCFStreamPropertyHTTPShouldAutoredirect, kCFBooleanTrue) == false )
        goto Bail;

    // Set the client notifier
    if ( CFReadStreamSetClient( readStreamRef, kNetworkEvents, ReadStreamClientCallBack, &ctxt ) == false )
        goto Bail;
    
    // Schedule the stream
    CFReadStreamScheduleWithRunLoop( readStreamRef, CFRunLoopGetCurrent(), kCFRunLoopCommonModes );
    
    // Start the HTTP connection
    if ( CFReadStreamOpen( readStreamRef ) == false )
        goto Bail;
    
    //  Set up a watch dog timer to terminate the download after 5 seconds
    if ( networkTimeoutTimerUPP == NULL )   networkTimeoutTimerUPP  = NewEventLoopTimerUPP( NetworkTimeoutTimerProc );
    if ( gNetworkTimeoutTimerRef != NULL ) RemoveEventLoopTimer( gNetworkTimeoutTimerRef );
    InstallEventLoopTimer( GetCurrentEventLoop(), kEventDurationSecond * 10, 0, networkTimeoutTimerUPP, (void*)readStreamRef, &gNetworkTimeoutTimerRef );
...

сама функция ReadStreamClientCallBack
Код

static void ReadStreamClientCallBack( CFReadStreamRef stream, CFStreamEventType type, void *clientCallBackInfo )
{
    #pragma unused (clientCallBackInfo)
    UInt8       buffer[16 * 1024];              //  Create a 16K buffer
    CFIndex     bytesRead;
    
        switch ( type )
        {
            case kCFStreamEventHasBytesAvailable:
              bytesRead = CFReadStreamRead( stream, buffer, sizeof(buffer) );
                
                  CFHTTPMessageRef myResponseHeader = NULL;
                  myResponseHeader = CFReadStreamCopyProperty ( stream, kCFStreamPropertyHTTPResponseHeader );
          CFStringRef sheader;
          sheader = CFHTTPMessageCopyHeaderFieldValue(stream, CFSTR("Set-Cookie")); // <-- НИЧЕГО
          
                  // пробую так
          CFDictionaryRef dict=NULL;
          dict = CFHTTPMessageCopyAllHeaderFields(stream);
          CFIndex ind = CFDictionaryGetCount(dict); // <-- тоже ничего, ind=0
...

что не так делаю 

да, кстати, запрос возвращает ожидаемый html код с формой.
Проблема в получении куки сенса... 

PM MAIL   Вверх
tyko
Дата 17.1.2008, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



проблема решена

если кому интересно
в фукции 
     sheader = CFHTTPMessageCopyHeaderFieldValue(stream, CFSTR("Set-Cookie")); // <-- НИЧЕГО
вместо stream нужно было поставить myResponseHeader
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

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

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


 




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


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

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