Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> idHTTP и IdCookieManager в патоке, как сделать чтобы обрабатывать куки? 
:(
    Опции темы
Zlo
  Дата 12.11.2006, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Собственно сабж. В патоке создаются компоненты idHTTP1 и IdCookieManager

Код

var
    idHTTP1:TidHTTP;
    IdCookieManager1: TIdCookieManager;

{...}

procedure TPMSender.Execute;
begin
  Synchronize(OnTime);
{++++++++}
  idHTTP1:=TidHTTP.Create(nil);
  idHTTP1.OnWork:=FIdHTTP1Work;
  IdCookieManager1:=TIdCookieManager.Create(idHTTP1);
  idHTTP1.CookieManager:=IdCookieManager1;
  idHTTP1.HandleRedirects:=true;
  idHTTP1.AllowCookies:=true;
  idHTTP1.Request.UserAgent:='Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)';
{...}
end;

Хватит ли этого кода, для того что бы кукименеджер работал?
PM MAIL   Вверх
Romikgy
Дата 12.11.2006, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



 а попробывать?
PS а че манагер куков, у тя в потоке создается?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Zlo
Дата 12.11.2006, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Romikgy, 
Цитата(Romikgy @  12.11.2006,  17:47 Найти цитируемый пост)
а попробывать?

да пробывал, не отдает куки

Цитата(Romikgy @  12.11.2006,  17:47 Найти цитируемый пост)
PS а че манагер куков, у тя в потоке создается? 

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


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(Zlo @  12.11.2006,  17:58 Найти цитируемый пост)
ага

и зачем?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Zlo
Дата 13.11.2006, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Romikgy @  13.11.2006,  12:50 Найти цитируемый пост)
и зачем? 

ну как зачем чтобы к idHTTP прикрутить менеджер...

а как тогда?
PM MAIL   Вверх
Zlo
Дата 14.11.2006, 03:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



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

Код

//$$---- Form CPP ----
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TStringList *sl = new TStringList();
sl->Add("Par=0");
sl->Add("Par2=1");
sl->Add("Par3=2");

Memo1->Text=IdHTTP1->Post("www.server.com",sl);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 Memo1->Clear();
 Memo1->Text=IdHTTP1->Get(Edit1->Text);
}
//---------------------------------------------------------------------------


сори, что на си ибо пример тока на сях, но не в этом суть, обработчики нажатий кнопри если в делфи перевести одно и тоже почти. Факт в том что один и тот же код откомпиленый под 7 и под студией работает по разному, вопрос почему и как сделать чтоб работало как под студией? Фишка в том, что приведенный выше код под студией отправляет серверу куки, а под 7 нет.
PM MAIL   Вверх
Romikgy
Дата 14.11.2006, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(Zlo @  14.11.2006,  02:33 Найти цитируемый пост)
под студией

что за студия?
Цитата(Zlo @  13.11.2006,  19:31 Найти цитируемый пост)
ну как зачем чтобы к idHTTP прикрутить менеджер...

а как тогда? 

имхо зачем его манагер создавать в потоке, имхо проще его кинуть на форму и пользоватся одним манагером куков на все соединения


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Matematik
Дата 14.11.2006, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Romikgy @  14.11.2006,  09:44 Найти цитируемый пост)
имхо проще его кинуть на форму и пользоватся одним манагером куков на все соединения 

Он разве потокобезопаный?

Это сообщение отредактировал(а) Matematik - 14.11.2006, 10:33
PM MAIL WWW ICQ   Вверх
dumb
Дата 14.11.2006, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

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



Zlo, достаточно сделать AllowCookies := true; - оно само все создаст.

Код

procedure TIdCustomHTTP.ProcessCookies(ARequest: TIdHTTPRequest; AResponse: TIdHTTPResponse);
...
    if not Assigned(FCookieManager) and AllowCookies then
    begin
      CookieManager := TIdCookieManager.Create(Self);
      FFreeOnDestroy := true;
    end;

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


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(Matematik @  14.11.2006,  09:32 Найти цитируемый пост)
Он разве потокобезопаный?

ну засунь обращение к нему в метод синхронайз, и юзай без траблов
dumb, а разве у автора этого не было?
Цитата(Zlo @  12.11.2006,  15:35 Найти цитируемый пост)
idHTTP1.AllowCookies:=true;




--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Zlo
Дата 14.11.2006, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



dumb, 
Цитата(dumb @  14.11.2006,  11:14 Найти цитируемый пост)
Zlo, достаточно сделать AllowCookies := true; - оно само все создаст.

Код

procedure TIdCustomHTTP.ProcessCookies(ARequest: TIdHTTPRequest; AResponse: TIdHTTPResponse);
...
    if not Assigned(FCookieManager) and AllowCookies then
    begin
      CookieManager := TIdCookieManager.Create(Self);
      FFreeOnDestroy := true;
    end;


Чесно гря я не очень понял, что делает твой код. Ты бы немог пояснить хотя бы в общих чертах.

Добавлено @ 16:39 
Кстати 
Код

idHTTP1.AllowCookies:=true;

у меня стоит

а манагер в синхронизацию не стоит, это и так очень сильно отражается на скорости работы потока
PM MAIL   Вверх
Romikgy
Дата 14.11.2006, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Zlo, оставь все как есть только поменяй этот вызов
Код

Memo1->Text=IdHTTP1->Post("http://www.server.com/",sl);

должно проехать
Ps и поставь 9 индейцев , имхо меньше багов , чем в 8


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Zlo
Дата 14.11.2006, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Romikgy, 
Дык в 7 делфе и стоит инду 9.00.10
Цитата(Romikgy @  14.11.2006,  16:45 Найти цитируемый пост)
http:

Ну http стоит конечно же, просто в примере забыл, но это сути дела не меняет.

Я кстати говорил про BDS2006 (Borland Developement Studio 2006) 

п.с. сори если "Developement" написал не правильно =)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




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


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

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