С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
145 / 100 / 6
Регистрация: 11.03.2010
Сообщений: 477

Создание и копирование настроек IdHTTP

05.07.2012, 18:33. Показов 2277. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Такой вот вопрос назрел.

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

в потоке я создаю свой компонент
C++
1
TIdHTTP * http;
Как можно скопировать в новый компонент шттп, значения кукисов, из "эталонного" компонента IdHTTP1.
Куки храню в компоненте IdCookieManager1
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.07.2012, 18:33
Ответы с готовыми решениями:

Копирование настроек компоненты
Всем привет! Имеется tpagecontrol. Необходимо при добавлении вкладки создать некоторые компоненты из шаблона. Возможно ли для новой...

Копирование данных и настроек
Посоветуйте пожалуйста программу, которая позволит скопировать все данные и настройки пользователя, перед переустановкой Windows, была...

Копирование настроек дополнения NoScript браузера Firefox
Как перенести настройки этого дополнения с одного компьютера на адругой?

11
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
05.07.2012, 18:43
Так походу IdCookieManager1 сохраняет куки(покрайней мере я так думаю)... вот только где и как их найти загадка...

Тут посмотри...IdHTTP авторизаця на форуме
0
145 / 100 / 6
Регистрация: 11.03.2010
Сообщений: 477
05.07.2012, 19:21  [ТС]
дело не в том как авторизироватся и сохранить куки в IdCookieManager1

а в том как заставить новосозданный компонент
TIdHTTP * http

считывать куки из уже ранее созданного и заполненного компонента?
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
05.07.2012, 21:06
Предпологаю
v1. Он должен автоматом грузить их
v2. Пробывать грузить их как по указаной мною ссылке

Добавлено через 1 час 30 минут
Это же твой код?

C++
1
2
3
4
5
6
7
8
9
10
11
void SetCookies()
{
TStringList *Temp=new TStringList();
Form1->IdHTTP1->Response->RawHeaders->Extract("Set-cookie", Temp);
for (int i = 0; i < Temp->Count; i++)
 {
 Temp->Strings[i]=Temp->Strings[i].SubString(0, AnsiPos(";",Temp->Strings[i])-1)+"; path=/";
 Form1->IdHTTP1->CookieManager->AddCookie(Temp->Strings[i], Form1->IdHTTP1->Request->Host);
 }
Temp->Free();
}
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
05.07.2012, 21:21
наглядный пример
C++
1
2
TButton *btn = new TButton();
btn->Caption = Button2->Caption;
если я правильно понял задание
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
05.07.2012, 22:50
К стати IdHTTP не визуальный компонент поэтому его можно вприципе вызывать из потока.(т.е если он есть на форме)
0
145 / 100 / 6
Регистрация: 11.03.2010
Сообщений: 477
06.07.2012, 10:09  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
наглядный пример
C++
1
2
TButton *btn = new TButton();
btn->Caption = Button2->Caption;
если я правильно понял задание
LK, Вы как всегда правы именно так это и делается. И что самое интерестное что я про это знал, и пробовал так сделать, все свойства которые мне были нужны я именно так и присвоил, пока не добрался до куков. на них система в тупую вылетает с ошибкой
Миниатюры
Создание и копирование настроек IdHTTP  
0
145 / 100 / 6
Регистрация: 11.03.2010
Сообщений: 477
06.07.2012, 16:27  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
v1. Он должен автоматом грузить их
v2. Пробывать грузить их как по указаной мною ссылке
v1. Автоматом это как ?
v2. Пока что я нашел временное решение для себя: сделал глобальный стринглист, в него загружаю куки, и потом из него при необходимости считываю... но неправильно это как то

Добавлено через 1 час 20 минут
На любой из этих строк вылетает ошибка как на картинке выше.
C++
1
2
3
4
5
http->ProxyParams->ProxyPort =  Form1->IdHTTP1->ProxyParams->ProxyPort;
http->ProxyParams->ProxyServer =  Form1->IdHTTP1->ProxyParams->ProxyServer;
http->ProxyParams->ProxyPassword =  Form1->IdHTTP1->ProxyParams->ProxyPassword;
http->ProxyParams->ProxyUsername =  Form1->IdHTTP1->ProxyParams->ProxyUsername;
http->ProxyParams->BasicAuthentication =  Form1->IdHTTP1->ProxyParams->BasicAuthentication;
это отрабатывает нормально, без ошибки.
C++
1
2
http->AllowCookies = true;
http->CookieManager = IdCookieManager1;
Добавлено через 4 часа 32 минуты
Странно это все....

вобщем нашлось решение, возможно это конечно особенности компилятора, или просто я еще многого не понимаю, но решение выглядит так:

C++
1
TIdHTTP * http = Form1->IdHTTP1;
Только после такого обьявления новосозданный компонент присваивает себе все параметры "эталонного" и с ним можно работать, можно применить ему все нужные мне параметры вручную.
Тоесть там гду раньше у меня вылетало аксес виолейшн то теперь ети строчки отрабатываются на ура.
C++
1
2
3
4
5
http->ProxyParams->ProxyPort =  Form1->IdHTTP1->ProxyParams->ProxyPort;
http->ProxyParams->ProxyServer =  Form1->IdHTTP1->ProxyParams->ProxyServer;
http->ProxyParams->ProxyPassword =  Form1->IdHTTP1->ProxyParams->ProxyPassword;
http->ProxyParams->ProxyUsername =  Form1->IdHTTP1->ProxyParams->ProxyUsername;
http->ProxyParams->BasicAuthentication =  Form1->IdHTTP1->ProxyParams->BasicAuthentication;
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
06.07.2012, 16:30
v1. Автоматом это как ?
IdCookieManager по идее должен их куда-то сохранять.
Ну в приципе поэтому и работает
C++
1
2
http->AllowCookies = true;
http->CookieManager = IdCookieManager1;
Всегда не понимал наличия не работающего нормально метода Assign
C++
1
IdHTTP1->Assign(IdHTTP2)
Добавлено через 2 минуты
C++
1
TIdHTTP * http = Form1->IdHTTP1;
Только после такого обьявления новосозданный компонент присваивает себе все параметры "эталонного" и с ним можно работать, можно применить ему все нужные мне параметры вручную.
Нифига не присваивает- это лиш присваивание указателей с потеряй выделенной памяти.

Но я уже говорил о
К стати IdHTTP не визуальный компонент поэтому его можно вприципе вызывать из потока.(т.е если он есть на форме)
Поэтому можно использовать в потоке IdHTTP который находится на форме.
1
145 / 100 / 6
Регистрация: 11.03.2010
Сообщений: 477
06.07.2012, 16:40  [ТС]
та я так и использовал, просто есть процесс который делает на сайт последовательно 500...700 запросов. если вынести в поток, то при одновременном обращении к IdHTTP1 поток разрушается.
потому и захотел в потоке создавать свой собственный компонент, который бы принимал значения нужного, и работал отдельно и независимо...

видать таки придется ставить отдельный компонент для потока.

Добавлено через 2 минуты
Цитата Сообщение от Avazart Посмотреть сообщение
Нифига не присваивает- это лиш присваивание указателей с потеряй выделенной памяти.

таки да, только что на тесте увидел. хотя по примеру ЛК у меня не создается компонент.
C++
1
TIdHTTP * http = new TIdHTTP ;
Code
1
[BCC32 Error] Unit1.cpp(138): E2285 Could not find a match for 'TIdHTTP::TIdHTTP()'
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
06.07.2012, 17:08
В потоке
C++
1
2
3
4
5
TIdHTTP  *IdHTTP2 = new TIdHTTP(NULL);
TIdCookieManager  *IdCookieManager2 = new TIdCookieManager(NULL);
//... задание свойств IdHTTP2;
IdHTTP2->CookieManager = IdCookieManager2;
//... задание свойств IdCookieManager2;
Если поток один и вы хотите что бы куки сохранились после окончания потока(его разрушения) то не создавайте в потоке
IdCookieManager а просто назначайте IdHTTP тот IdCookieManager который лежит на форме:
C++
1
2
3
TIdHTTP  *IdHTTP2 = new TIdHTTP(NULL);
//... задание свойств IdHTTP2;
IdHTTP2->CookieManager = Form1->IdCookieManager1;
Добавлено через 13 минут
В принципе можно вообще не создавать компоненты, просто вызывать их в потоке
C++
1
2
3
4
5
6
7
//---------------------------------------------------------------------------
void __fastcall TMyThread::Execute()
{
// Настройка IdHTTP1
Form1->IdHTTP1->Get(/*...*/);
}
//---------------------------------------------------------------------------
Впринципе я так делал в проге которая лежит здесь Взять значения из сайта
1
145 / 100 / 6
Регистрация: 11.03.2010
Сообщений: 477
07.07.2012, 10:27  [ТС]
Спасибо!

Работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.07.2012, 10:27
Помогаю со студенческими работами здесь

Резервное копирование настроек Win Server 2012 R2
Приветствую вас, знатоки WinServer. Столкнулся с такой бедой : хочу создать резервное копирование настроек Win Server 2012 R2. ...

Копирование общего каталога с переносом настроек безопасности
Доброго времени суток! Имеется общедоступный каталок с настройками доступа и безопасности к нему. Необходимо перенести его на другой сервер...

Idhttp куки их создание показ и скачивание файла
задача проста скачать файл например http://www.fayloobmennik.net/2583037 гетом беру страницу вырываю ссылку...

IdHTTP и IdHTTP сервер: как отправить сообщение от сервера к клиенту?
Всем привет, отправляю файл по частям с клиента на сервер, и хочу получать обратное сообщение, что текущая часть файла дошла успешно....

Создание настроек
Здравствуйте, помогите доработать идею. Вообщем работаю над интернет магазином, так вот надо что то вроде двух режимов в магазине, типо :...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru