Форум программистов, компьютерный форум, киберфорум
Delphi: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.69/74: Рейтинг темы: голосов - 74, средняя оценка - 4.69
1 / 1 / 0
Регистрация: 04.07.2014
Сообщений: 47

TChromium (dcef3): как правильно сформировать POST запрос

28.07.2014, 13:18. Показов 16697. Ответов 67
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго здоровья!
Прошу помощи в формировании правильного POST запроса.
Известно все, что нужно отправить. Неизвестно как правильно это оформить.

Использовать надо TChromiumOCR (dcef3).

Тампердадой установлено что нужно отправить:
-Заголовки запроса:
Host, User-Agent, Accept, Accept-Language, Accept-Encoding, Content-Type, Referer, Content-Length, Origin, Cookie, Connection, Pragma, Cache-Control

-Сообщение:
sessionid=(...)&currency(...)=&subtotal= (...)&fee=(*)&total=(...)

Код такой:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
function CreateField(const AValue: AnsiString): ICefPostDataElement;
begin
 Result := TCefPostDataElementRef.New;
 Result.SetToBytes(Length(AValue), PAnsiChar(AValue));
end;
 
//*****************************************
 
procedure POST(total, fee: integer);
var
 Header: ICefStringMultimap;
 Data: ICefPostData;
 Request: ICefRequest;
 Cook: ICefCookieManager;
begin
 Request := TCefRequestRef.New;
 Request.Url := '';
 Request.Method := 'POST';
 Request.Flags:=[UR_FLAG_ALLOW_CACHED_CREDENTIALS,UR_FLAG_ALLOW_COOKIES];
 
 Header := TCefStringMultimapOwn.Create;
 Header.Append('Host', '(...)');
 Header.Append('User-Agent', '(...)');
 Header.Append('Accept', '(...)');
 Header.Append('Accept-Language', '(...)');
 Header.Append('Accept-Encoding', '(...)');
 Header.Append('Content-Type', '(...)');
 Header.Append('Referer', '(...)');
 Header.Append('Content-Length', '(...)');
 Header.Append('Origin', '(...)');
 Header.Append('Connection', '(...)');
 Header.Append('Pragma', '(...)');
 Header.Append('Cache-Control', '(...)');
 
 Header.Append('Cookie',(...));
 ...
 Header.Append('Cookie',(...));
 
 Request.SetHeaderMap(Header);
 
 Data := TCefPostDataRef.New;
 Data.AddElement(CreateField('sessionid='+SessionID));
 Data.AddElement(CreateField('&currency=5'));
 Data.AddElement(CreateField('&subtotal='+inttostr(total-fee)));
 Data.AddElement(CreateField('&fee='+IntToStr(fee)));
 Data.AddElement(CreateField('&total='+IntToStr(total)));
 
 Request.PostData := Data;
 
 form1.Chromium1.Browser.MainFrame.LoadRequest(Request);
end;
Сомнения и вопросы:
- Где то видел, что в конце строки POST запроса надо добавлять "\r\n". Надо ли?
- Надо ли добавлять строку "POST http://www.site.ru HTTP/1.1\r\n"?
- Некоторые данные извлекаются из куки файлов в закодированном (utf-8) виде. Content-Type в данном запросе = "application/x-www-form-urlencoded; charset=UTF-8". В каком виде надо отправлять данные: как есть в utf-8 или декодировать в win1251?
- В коде параметр Request.Flags указывает на использование куки файлов. Нипанятна же... надо вручную прописывать заголовок "Cookie" или нет.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.07.2014, 13:18
Ответы с готовыми решениями:

Правильно сформировать POST-запрос
Доброго дня! Есть POST запрос который нормально отправляется через утилиту CURL. Вот ее вид: curl.exe -v -F "ufile=@<тут...

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

Delphi 7 + TChromium (DCEF3) = Flash Player Not Working
Установил на Delphi 7 компонент TChromium, новенький DCEF3. Помимо прочих непонятных глюков: Flash Player не работает - лишь предлагает...

67
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.08.2014, 13:50
Студворк — интернет-сервис помощи студентам
Может а может и не быть.
А на какую кнопку ("название") нужно нажать?
0
1 / 1 / 0
Регистрация: 04.07.2014
Сообщений: 47
13.08.2014, 13:59  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Может а может и не быть.
А на какую кнопку ("название") нужно нажать?
Вы имеете ввиду кнопку покупки лота?
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.08.2014, 15:15
Та которая POST вызывает.

Добавлено через 47 минут
Delphi
1
2
Header.Append('Cookie',(...));
Request.SetHeaderMap(Header);
А зачем ты руками куки перевыставляешь? Да и вообще может быть нет необходимости вообще заголовки выставлять.
0
1 / 1 / 0
Регистрация: 04.07.2014
Сообщений: 47
14.08.2014, 13:56  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Та которая POST вызывает.
Заходим на страницу лота, в списке продавцов нажимаем "купить", в появившемся окне ставим галочку и нажимаем "купить". Далее посылается запрос.

Delphi
1
2
Header.Append('Cookie',(...));
Request.SetHeaderMap(Header);
Цитата Сообщение от Avazart Посмотреть сообщение
А зачем ты руками куки перевыставляешь? Да и вообще может быть нет необходимости вообще заголовки выставлять.
У Request есть свойство Flags, но хз как оно работает. Пробовал с ним и без него. Все один результат.

вот все возможные флаги:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    // Default behavior.
    //UR_FLAG_NONE                      = 0,
    // If set the cache will be skipped when handling the request.
    UR_FLAG_SKIP_CACHE,
    // If set user name, password, and cookies may be sent with the request.
    UR_FLAG_ALLOW_CACHED_CREDENTIALS,
    // If set cookies may be sent with the request and saved from the response.
    // UR_FLAG_ALLOW_CACHED_CREDENTIALS must also be set.
    UR_FLAG_ALLOW_COOKIES,
    // If set upload progress events will be generated when a request has a body.
    UR_FLAG_REPORT_UPLOAD_PROGRESS,
    // If set load timing info will be collected for the request.
    UR_FLAG_REPORT_LOAD_TIMING,
    // If set the headers sent and received for the request will be recorded.
    UR_FLAG_REPORT_RAW_HEADERS,
    // If set the CefURLRequestClient::OnDownloadData method will not be called.
    UR_FLAG_NO_DOWNLOAD_DATA,
    // If set 5XX redirect errors will be propagated to the observer instead of
    // automatically re-tried. This currently only applies for requests
    // originated in the browser process.
    UR_FLAG_NO_RETRY_ON_5XX
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.08.2014, 13:59
Цитата Сообщение от Алешенька Посмотреть сообщение
У Request есть свойство Flags, но хз как оно работает. Пробовал с ним и без него. Все один результат.
А при чем тут флаги.
Я пробовал авторизироваться тут на форуме, я заголовки вообще не заполнял и успешно прошло.
0
1 / 1 / 0
Регистрация: 04.07.2014
Сообщений: 47
14.08.2014, 14:09  [ТС]
Флаги управляют куками. или я не прав?
Цитата Сообщение от Avazart Посмотреть сообщение
А при чем тут флаги.
Я пробовал авторизироваться тут на форуме, я заголовки вообще не заполнял и успешно прошло.
Совсем без заголовков 400 выходит и ответ пустой.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.08.2014, 14:35
Цитата Сообщение от Алешенька Посмотреть сообщение
Флаги управляют куками. или я не прав?
Ну так определитесь вы хотите каждый раз руками куки вводить или что бы оно сам подхватывала куки?

Цитата Сообщение от Алешенька Посмотреть сообщение
Совсем без заголовков 400 выходит и ответ пустой.
Вы запросы сверяйте, а не спешите смотреть на конечный результат.
0
1 / 1 / 0
Регистрация: 04.07.2014
Сообщений: 47
19.08.2014, 15:07  [ТС]
Ладна. Сдаюсь. Похоже, что нет на свете человека, который знает, как это сделать. Или этот *** не хочет делиться!

Добавлено через 2 часа 14 минут
Получилось!
НАКОНЕЦ-ТО!
Всем огромное спасибо! Отдельно Avazart`у! Просто заставил все перепроверить)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.08.2014, 15:07
Помогаю со студенческими работами здесь

TChromium узнать значения POST
Как возможно, узнать\получить данные POST запроса? Простой пример.. при авторизации с помощью JS жмём кнопу и т.п. и на сайт уходя...

После закрытия программы c TChromium (dcef3) выскакивает AV
Здравствуйте. Вот такая проблема. Ставил TChromium на XE3. Прикол в том, что в аналогичном проекте в Delphi такой проблемы нет. ...

Как правильно составить запрос POST
req:='POST https://signin.ebay.com/ws/eBayISAPI.dll?SignIn HTTP/1.0'#13#10+ 'Content-Type: application/x-www-form-urlencoded'#13#10+ ...

Http POST запрос, как правильно написать
Добрый день, мне нужно отправить данные на сервер, посредством http post запросом, нужно добавить автомобиль, сам пост запрос выглядит вот...

Как правильно отправить POST запрос с массивом?
Доброго времени суток. Не могу понять, как отправить POST запросом массив на сервер, из C#. Нужно для добавления контакта в amoCRM. ...


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

Или воспользуйтесь поиском по форуму:
68
Ответ Создать тему
Новые блоги и статьи
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru