Робота з cookie в компоненті twebbrowser (зчитування, учтановка)

Робота з cookie в компоненті TWebBrowser (зчитування, учтановка)

Ось виникло питання стосується cookie і компонента TWebBrowser.
Моє питання складається з двох частин

1) Перша частина стосується отримання кукисов
2) Друга частина - передача / установка кукисов до відкриття сторінки

Першу частину питання вирішив, в інтернеті було достатньо документації як можна вважати кукис скориставшись OLE інтерфейс, а саме

myCookie: = (WebBrowser1.Document as IhtmlDocument2) .cookie;

Ось друга частина набагато складніше. Довго шукаючи прийшов ось до такого висновку, раз кука передається через header то її треба додати туди до запиту в ручну, а саме:

Headers: = StringToVarArray ( "COOKIE: test_cookie = 123456789" # 13 # 10);

Функція StringToVarArray потрібна для перетворення String в Variant тип. Код функції дуже простий:

function StringToVarArray (const S: string): Variant;
# XA0; var
# XA0; # XA0; i: integer;
begin
# XA0; Result: = VarArrayCreate ([0, Length (S) - 1], varByte);
# XA0; for i: = 1 to length (S) do
# XA0; # XA0; Result [i-1]: = ord (S [i]);
end;

Ви підсумку все повинно бути як в шоколаді але, ніфіга не працює :-), ні тільки з куками але і з PostData.

Думаю дана статейка буде цікава, може ви помітите що я роблю не так?

п.с. Тестування проводжу на локальному компі, встановлений апач. Скрипт readcockie.php відображає вміст COOKIE і POST масивів.

П.П.С. Установку кукисов через компонент IdHTTP можна зробити банально через header і думаю там буде працювати, правда я поки особисто не тестіл, але є пости в інеті що дана конструкція працює Мені ж бажано рішення з TWebBrowser

Ось з проблемою вже взагалі розібрався, типу вже локалізована Помилка саме з Cookie інші властивості змінюються без проблем. Такі як User-Agent і Referer тестував особисто.
Вопросси, як міняти Cookie?

ІМХО: Як я зрозумів у компонента TWebBrowser-а як і у самого Delphi купа глюків! Блін як можна було зробити компонент не давши користувачеві можливість передавати кукіси? Єдине пояснення то що Борланд як і Біл взагалі знахабнів!

Тепер по суті, раз у TWebBrowser-а немає можливості редагувати тег cookie то виходить протягнути користуватися стороннім компонентом, наприклад IdHTTP який з цим добре справляється. А результат довантажувати в TWebBroser. Тепер питання, як можна отримати вміст GET, POST, Header запиту. Все треба обробляти на BeforeNavigate, але як зчитувати дані?

Заздалегідь вдячний за будь-яку пораду

Ребята помогите вже з останньою частиною проблеми. Після тривалих мук і читання MSDN прийшов до висновку що все таки можна управляти будь через:

(WebBrowser1.Document as IhtmlDocument2) .cookie

але за однієї умови, кука повинна бути передана до того як її почнемо редагувати. А саме, якщо я відриваю якийсь урл який встановлює куку то після цього і тільки після цього її можна редагувати (підміняти або змінити).

Але якщо кука зберігатися і мені її відредагувати до запиту то виникають проблеми. Спроба відредагувати на подію Beforenavigate закінчилося невдачею так як на цьому етапі WebBrowser1.Document взагалі не існує

Що б WebBrowser1.Document існував я спробував спочатку відкрити документ about: blank і тільки після цього відредагувати куку але нічого не вийшло :-(

Може хто що порадить

Пам'ять: 0.74 MB
Час: 0.043 c

Схожі статті