Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Cookie


Автор: Lengdon 10.8.2005, 12:21
Помогите разобраться с установкой кукисов,
Нашёл, что это делается через класс CinternetSession
С помошью Setcookie.
Но написать рабочий код у меня так и не получилось, то при компиляции ошибка, то просто код не работает.
Хочу пример , очень хочу. smile

Автор: Coocky 10.8.2005, 17:12
Ну что все молчат?
Тогда я smile
Код

CString Cockie_name;
CString Cockie_value;
CInternetSession session;

url=" www.forum.vingrad.ru";
Cockie_name="My_coockie";
Cockie_value="Ya_Zashel!";

session.SetCookie(url,Cockie_name,Cockie_value);



Lengdon
Вообще б неплохо было б об ошибках сообщить сюда smile

Автор: Lengdon 11.8.2005, 19:30
Код

#include <AFXINET.H>


void main (void)
{
    CString Cockie_name;    
    CString Cockie_value;
    CString url;
    
    CInternetSession session;
    
    url="www.forum.vingrad.ru";    
    Cockie_name="My_coockie";    
    Cockie_value="Ya_Zashel!";
    
    session.SetCookie(url,Cockie_name,Cockie_value);
}

Во-первых в url первый символ пробел обязателен или это опечатка,
Во-вторых при "линковки" этого кода возникла ошибка: "cannot open file "nafxcwd.lib"".
Я сделел следущее: Project -> Settings -> Use MFC in a Shared DLL.
Всё нормально построилось, но я включил http-сервак поставил ip-шник www.forum.vingrad.ru
на 127.0.0.1, зашёл через IE на этот узел, никаких кукисов не отправилось.
Возможно это из-за того, что кукисы устанавливаются до конца сеанса, тогда как указать время хранения кукисов?
И ещё в конце кода не надо писать: session.close?

Автор: Coocky 12.8.2005, 10:23
Цитата
Во-первых в url первый символ пробел обязателен или это опечатка

Опечатка, а вообще желательно с http://www.............
Цитата
И ещё в конце кода не надо писать: session.close?

А ты делал-Open?
Нет..
Вообще инициализация CInternetSession происходит при создании обьекта..
Цитата
на 127.0.0.1, зашёл через IE на этот узел, никаких кукисов не отправилось

Ненадо ничего менять!
Просто нужно было имя указать-localhost.И все..
Сейчас у себя проверю...

Автор: Coocky 12.8.2005, 10:43
да и у меня не отправляется... smile
session.SetCookie(url,Cockie_name,Cockie_value);
возвращает FALSE;
потом еще сделал
Код

 BOOL i=  session.SetCookie(url,Cockie_name,Cockie_value);
DWORD h =GetLastError();

так вот h =259.....No more data is available.
Дело в адресе, я так думаю, позже разберусь..

Автор: JoyEx 12.8.2005, 11:58
Код

session.SetCookie(url, "", "Hi = All; expires = Sat, 13-Jan-2007 00:00:00 GMT");

Автор: Coocky 12.8.2005, 14:56
JoyEx
Поясни, плиз..
Что за прикол в Cockie без имени?

Автор: Lengdon 12.8.2005, 15:47
Цитата
Ненадо ничего менять!
Просто нужно было имя указать-localhost.И все..

У меня просто localhost не на 127.0.0.1.



Всем большое спасибо, всё работает!!! smile

Автор: JoyEx 12.8.2005, 15:50
Coocky

Код

session.SetCookie(url, "", "Hi = All; expires = Sat, 13-Jan-2007 00:00:00 GMT");


это же всеравно, что
Код

session.SetCookie(url, "Hi", "All; expires = Sat, 13-Jan-2007 00:00:00 GMT");

Автор: Lengdon 12.8.2005, 15:54
Имя cookie - Hi,
Значение - All,
Рабочий код:
Код

#include <AFXINET.H>


void main (void)
{
    CString url;
    CString data;
    
    CInternetSession session;

    data="Hi = All; expires = Sat, 13-Jan-2007 00:00:00 GMT";
        url="http://www.forum.vingrad.ru";
    
    session.SetCookie(url, "", data);
}

Автор: Coocky 12.8.2005, 17:07
Ну и для чего тогда второй параметр?
Если он пустой, то зачем?

Автор: JoyEx 13.8.2005, 10:41
Цитата(Coocky @ 12.8.2005, 17:07)
Ну и для чего тогда второй параметр?
Если он пустой, то зачем?


- воощее-то там потом вызывается InternetSetCookie()

Смотрите в MSDN InternetSetCookie(), раздел "Managing Cookies" [Platform SDK: Windows Internet]:
Код

// Create a session cookie.
bReturn = InternetSetCookie("http://www.adventure_works.com", NULL,
            "TestData = Test");
                            
// Create a persistent cookie.
bReturn = InternetSetCookie("http://www.adventure_works.com", NULL,
             "TestData = Test; expires = Sat, 01-Jan-2000 00:00:00 GMT");

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)