Доброго здоровья!
Прошу помощи в формировании правильного POST запроса.
Известно все, что нужно отправить. Неизвестно как правильно это оформить.
Использовать надо TChromiumOCR (dcef3).
Тампердадой установлено что нужно отправить:
-Заголовки запроса:
Host, User-Agent, Accept, Accept-Language, Accept-Encoding, Content-Type, Referer, Content-Length, Origin, Cookie, Connection, Pragma, Cache-Control
-Сообщение:
sessionid=(*)¤cy(*)=&subtotal=(*)&fee=(*)&total=(*)
Код такой:
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('¤cy=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" или нет.
Кароч, тому кто поможет дам 333 рубля.