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

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

05.07.2012, 18:33. Показов 2332. Ответов 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
8488 / 6155 / 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
8488 / 6155 / 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
8488 / 6155 / 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
8488 / 6155 / 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
8488 / 6155 / 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
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru