Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.07.2015, 07:01   #1
vipok72
Пользователь
 
Регистрация: 26.07.2015
Сообщений: 59
По умолчанию Отправка POST запроса

Требуется сделать следующее:
У меня есть компонент Chromium Embedded, на нем я авторизован на одном сайте, куки соответственно сохранены, нужно совершить одно действие с помощью POST запроса, требуется чтобы куки сами были отправлены а я ввел только нужные данные для post запроса...
idHTTP для этого не подошел ибо нужно самому куки вводить и т.д. и т.п., кароч муторно с ним, нашел одну тему на форуме тык в этой теме идет отправка post запроса с помощью этого компонента, ошибка у меня возникает на строке 17 (см. 1 пост) ошибка: Access violation at address 00000000. Read of address 00000000 (если закомментировать все Request, Header и Data - ошибки нет), в чем дело понять не могу, прошу помощи
vipok72 вне форума Ответить с цитированием
Старый 26.07.2015, 07:20   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
Read of address 00000000
Чтение из несозданного/незаданного массива/объекта.
p51x вне форума Ответить с цитированием
Старый 26.07.2015, 07:34   #3
vipok72
Пользователь
 
Регистрация: 26.07.2015
Сообщений: 59
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Чтение из несозданного/незаданного массива/объекта.
Дело в том что вроде как все задано... ну лично у меня в программе Request.Url задан
Код:
var
 Request: ICefRequest;
begin
 Request := TCefRequestRef.New;
 Request.Url := ''; //тут и происходит ошибка, хоть в программе ссылка задана, и чтения нет тут... тут запись вроде как
vipok72 вне форума Ответить с цитированием
Старый 26.07.2015, 09:43   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
TCefRequestRef.New
Может нужно TCefRequestRef.Create?
Что это вообще за метод такой необычноназванный?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.07.2015, 11:05   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
ну лично у меня в программе Request.Url задан
а метод? а заголовки? а данные? гадать будем или код покажите?

Цитата:
Может нужно TCefRequestRef.Create?
Что это вообще за метод такой необычноназванный?
Не. Там так. http://stackoverflow.com/questions/1...-with-chromium
p51x вне форума Ответить с цитированием
Старый 26.07.2015, 11:59   #6
vipok72
Пользователь
 
Регистрация: 26.07.2015
Сообщений: 59
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Может нужно TCefRequestRef.Create?
Что это вообще за метод такой необычноназванный?
Дело в том что я пока не особо знаю Delphi, сейчас начинаю понимать что там куча ошибок
vipok72 вне форума Ответить с цитированием
Старый 26.07.2015, 12:44   #7
vipok72
Пользователь
 
Регистрация: 26.07.2015
Сообщений: 59
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
а метод? а заголовки? а данные? гадать будем или код покажите?


Не. Там так. http://stackoverflow.com/questions/1...-with-chromium
в начале где объявляются переменные
Код:
var
  Header: ICefStringMultimap;
  Data: ICefPostData;
  Request: ICefRequest;
функция
Код:
function CreateField(const AValue: AnsiString): ICefPostDataElement;
begin
  Result := TCefPostDataElementRef.New;
  Result.SetToBytes(Length(AValue), PAnsiChar(AValue));
end;
остальную часть кода переделал и сделал идентичным первому коду пользователя TLama в указанной вами ссылке

Код:
Request := TCefRequestRef.New;
Header := TCefStringMultimapOwn.Create;
Header.Append('Host', 'steamcommunity.com');
Header.Append('User-Agent', 'Mozilla/5.0 (Windows NT 5.1; rv:30.0) Gecko/20100101 Firefox/30.0');
Header.Append('Accept', '*/*');
Header.Append('Accept-Language', 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3');
Header.Append('Accept-Encoding', 'gzip, deflate');
Header.Append('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
Header.Append('Referer','http://steamcommunity.com/market/listings/'+IntToStr(nomer)+'/'+name);
Header.Append('Origin', 'http://steamcommunity.com');
Header.Append('Connection', 'keep-alive');
Header.Append('Pragma', 'no-cache');
Header.Append('Cache-Control', 'no-cache');

Data := TCefPostDataRef.New;

Data.AddElement(CreateField('sessionid='+Form1.Edit2.Text));
Data.AddElement(CreateField('&currency=1'));
Data.AddElement(CreateField('&subtotal='+subtotal));
Data.AddElement(CreateField('&fee='+fee));
Data.AddElement(CreateField('&total='+FloatToStr(total)));
Data.AddElement(CreateField('&quantity=1'));
					
Request := TCefRequestRef.New;
Request.Flags := [UR_FLAG_ALLOW_CACHED_CREDENTIALS,UR_FLAG_ALLOW_COOKIES];
Request.Assign('http://steamcommunity.com/market/buylisting/'+listingid, 'POST', Data, Header);

try
form1.Chromium1.Browser.MainFrame.LoadRequest(Request);
except
end;
Но тем не менее возникает другая уже ошибка:
Проект вызвал исключение класса EAccessVioation с сообщением 'Access vioation at address 75823E8D in module 'oleaut32.dll'. Read at address 5EC20041'
Кстати post запрос должен отправится при некоторых условиях, при этом до этого идет работа с интернетом, в httpanalyzer7 все отображается кроме этого самого post запроса, если запускать не из под отладчика возникает какая то ошибка которая завершает работу программы

P.S. Заметил что 2 раза написал строчку
Код:
Request := TCefRequestRef.New;
удалил в коде первую строчку
теперь Read of address 6625FFFC

Последний раз редактировалось vipok72; 26.07.2015 в 13:02.
vipok72 вне форума Ответить с цитированием
Старый 26.07.2015, 13:26   #8
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

А на какой строчке кода возникает ошибка: Read of address 6625FFFC ?
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 26.07.2015, 13:39   #9
vipok72
Пользователь
 
Регистрация: 26.07.2015
Сообщений: 59
По умолчанию

Цитата:
Сообщение от Krasiosoft Посмотреть сообщение
А на какой строчке кода возникает ошибка: Read of address 6625FFFC ?
Как я понимаю в строчке:
Код:
Request := TCefRequestRef.New;
vipok72 вне форума Ответить с цитированием
Старый 26.07.2015, 13:42   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Нет, скорее всего XXX.New просто не создает нужные объекты, а сама ошибка возникает на строках ниже. Нужно поставить бряк, и проверить чему равна Request после присваивания. Если нулю - значит хромиум тебя послал
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка post запроса drakonbc C# (си шарп) 1 24.07.2013 01:12
Отправка POST запроса Besha07 PHP 8 18.10.2012 14:28
Отправка post-запроса С# galogen13 Помощь студентам 3 22.04.2012 03:20
Отправка запроса POST CreatiK Общие вопросы .NET 4 06.12.2010 21:15
Отправка POST запроса S@fer Работа с сетью в Delphi 0 29.01.2009 13:33