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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с куками 
:(
    Опции темы
Satell
Дата 8.7.2007, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



1. Как сделать, чтобы код на vc++ ниже, скачивающий страницу, добавлял в заголовок запроса такую куку из джава скрипта? т.е. чтобы сервер опряделял, что у меня есть поддержка кук и читал эту куку... 
и ещё есть ли в с++ библиотека на подобии как в perl LWP::UserAgentLWP cookie_jar, чтобы когда я запрашиваю страницу у меня определялось, что куки включены и также сохранялись там куки с запрашиваемой страницы.
Если это нельзя сделать с помощью WinInet, то буду благодарен за код на сокетах
2. как сделать чтобы тянуть не всю страницу, а только http заголовок?

<script language="javascript" type="text/javascript">
<!--
document.cookie='roton=MnwwfDExODM4ODExMDR8MTE4Mzg4MTEwNHwwO2Jvb2ttYXJrfG5vcmVmX2lu; expires=Mon, 09 Jul 2007 07:51:44 GMT; path=/;';
document.cookie='fav=1183881104; expires=Mon, 07 Jul 2008 07:51:44 GMT; path=/;';
//-->
</script>

Код

#include "stdafx.h"

#include <windows.h>
#include <wininet.h>
#pragma comment(lib,"wininet")

#include <stdlib.h>
#include <fstream.h>

int main(int argc, char* argv[])
{
    bool ok = false;

    
    HINTERNET hInternet =
        ::InternetOpen(
            TEXT("WinInet Test"),
            INTERNET_OPEN_TYPE_PRECONFIG,
            NULL,NULL,            
            0);

    if (hInternet != NULL) {
        HINTERNET hConnect = 
            ::InternetConnect(
                hInternet,
                TEXT("www.site.com"),
                INTERNET_DEFAULT_HTTP_PORT,
                NULL,NULL,
                INTERNET_SERVICE_HTTP,
                0,
                1u);

        if (hConnect != NULL) {
            HINTERNET hRequest = 
                ::HttpOpenRequest(
                    hConnect,
                    TEXT("GET"),
                    TEXT("cgi-bin/infomy.cgi"),
                    NULL,
                    NULL,
                    0,
                    INTERNET_FLAG_KEEP_CONNECTION,
                    1);

            if (hRequest != NULL) {
                BOOL bSend = ::HttpSendRequest(hRequest, NULL,0, NULL,0);
                if (bSend) {
                    ofstream fnews("mp3.htm",ios::out|ios::binary);
                    if (fnews.is_open()) for (;;) {
                        char  szData[1024];
                        DWORD dwBytesRead;
                        BOOL bRead = 
                            ::InternetReadFile(
                                hRequest,
                                szData,sizeof(szData)-1,
                                &dwBytesRead);

                        if (bRead == FALSE  ||  dwBytesRead == 0)
                            break;

                        szData[dwBytesRead] = 0;
                        fnews << szData;

                        ok = true;
                    }
                }

                ::InternetCloseHandle(hRequest);
            }

            ::InternetCloseHandle(hConnect);
        }
        
        ::InternetCloseHandle(hInternet);
    }

    if (ok)
        system("start mp3.htm");

    return 0;
}

PM MAIL   Вверх
jonie
Дата 8.7.2007, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата

1. Как сделать, чтобы код на vc++ ниже, скачивающий страницу, добавлял в заголовок запроса такую куку из джава скрипта? т.е. чтобы сервер опряделял, что у меня есть поддержка кук и читал эту куку... 
читай стаднарт HTTP. Куки шлются каждый раз при каждом обращении прямо к служебных загооловках.. в общем ietf.org в помощь)
Цитата

и ещё есть ли в с++ библиотека на подобии как в perl LWP::UserAgentLWP cookie_jar, чтобы когда я запрашиваю страницу у меня определялось, что куки включены и также сохранялись там куки с запрашиваемой страницы.
есть библиотека curl. Кросплатформенная. Поддержка TLS.... ну и много чего. Как раз для работы тебе я пологаю пойдет.
Цитата

2. как сделать чтобы тянуть не всю страницу, а только http заголовок?
не читать далее... WinInetAPI тут врядли помогут. Стоит спуститься ниже... к сокетам...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Satell
Дата 9.7.2007, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



кука не читается, добавляю в ф-и httpsendrequest дополнительные заголовки и читаю на сервере $env{HTTP_COOKIE}, так вот она пустая, Accept-language читается нормально.

char* header ="Cookie: test=12345\r\nAccept-language: en-us\r\n";
BOOL bSend = ::HttpSendRequest(hRequest, header,44, NULL,0);


да кстате как прочитать куки из страницы, которую я загружаю?
PM MAIL   Вверх
Satell
Дата 9.7.2007, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



roton=MnwwfDExODM4ODExMDR8MTE4Mzg4MTEwNHwwO2Jvb2ttYXJrfG5vcmVmX2lu; expires=Mon, 09 Jul 2007 07:51:44 GMT; path=/;
fav=1183881104; expires=Mon, 07 Jul 2008 07:51:44 GMT; path=/;
Как вытащить этот текст из страницы без регулярных выражений?

document.cookie='текст1';
document.cookie='текст2';
текст1=roton=MnwwfDExODM4ODExMDR8MTE4Mzg4MTEwNHwwO2Jvb2ttYXJrfG5vcmVmX2lu; expires=Mon, 09 Jul 2007 07:51:44 GMT; path=/;
текст2=fav=1183881104; expires=Mon, 07 Jul 2008 07:51:44 GMT; path=/;

Это сообщение отредактировал(а) Satell - 9.7.2007, 15:27
PM MAIL   Вверх
ptr
Дата 10.7.2007, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

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



Цитата(Satell @  8.7.2007,  21:07 Найти цитируемый пост)
2. как сделать чтобы тянуть не всю страницу, а только http заголовок?

Для этого у HTTP есть метод HEAD.

Цитата(Satell @  9.7.2007,  18:11 Найти цитируемый пост)
Как вытащить этот текст из страницы без регулярных выражений?

Если не хочешь использовать регулярные выражения, то поищи какую-нибудь библиотеку.


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




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


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

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