En raison d'une documentation manquante pour Delphi Chromium Embedded, je ferai référence aux exigences requises pour l'envoi de requêtes Web pour la version C++ de CEF. Donc, vous devez utiliser la méthode LoadRequest
pour envoyer des requêtes dans Chromium. Pour l'utiliser, vous avez besoin de l'instance d'objet de la classe d'objet de requête CefRequest
avec les objets HeaderMap
et CefPostData
pour l'en-tête de requête et la spécification de données.
Développant Henri Gourvest (auteur de l'emballage CEF Delphi) exemple de this thread
, vous pouvez à Delphes essayer quelque chose comme le pseudo-code suivant:
uses
ceflib;
function CreateField(const AValue: AnsiString): ICefPostDataElement;
begin
Result := TCefPostDataElementRef.New;
Result.SetToBytes(Length(AValue), PAnsiChar(AValue));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Header: ICefStringMultimap;
Data: ICefPostData;
Request: ICefRequest;
begin
Header := TCefStringMultimapOwn.Create;
Header.Append('Content-Type', 'application/x-www-form-urlencoded');
Data := TCefPostDataRef.New;
Data.AddElement(CreateField('Data.id=27'));
Data.AddElement(CreateField('&Data.title=title'));
Data.AddElement(CreateField('&Data.body=body'));
Request := TCefRequestRef.New;
Request.Flags := WUR_FLAG_NONE;
Request.Assign('http://example.com/', 'POST', Data, Header);
Chromium1.Browser.MainFrame.LoadRequest(Request);
end;
La même chose devrait faire une autre version du code ci-dessus :
procedure TForm1.Button1Click(Sender: TObject);
var
Header: ICefStringMultimap;
Data: ICefPostData;
Request: ICefRequest;
begin
Request := TCefRequestRef.New;
Request.Url := 'http://example.com/';
Request.Method := 'POST';
Request.Flags := WUR_FLAG_NONE;
Header := TCefStringMultimapOwn.Create;
Header.Append('Content-Type', 'application/x-www-form-urlencoded');
Request.SetHeaderMap(Header);
Data := TCefPostDataRef.New;
Data.AddElement(CreateField('Data.id=27'));
Data.AddElement(CreateField('&Data.title=title'));
Data.AddElement(CreateField('&Data.body=body'));
Request.PostData := Data;
Chromium1.Browser.MainFrame.LoadRequest(Request);
end;
Dans ce fil, il y a [ 'la example'] (https://groups.google.com/forum/?fromgroups=#!topic/delphichromiumembedded/r1_ytEvBHEs) d'une requête POST faite par emballage Delphi CEF auteur lui-même. Si j'arrive à Delphi et trouve un endroit pour tester ça, je posterai ceci comme réponse (si quelqu'un ne sera pas plus rapide :-) – TLama
Merci, je vais m'y pencher. – Trevor
Donc je l'ai eu le travail .. (avec votre exemple TLama) Tout sauf pour ajouter les données d'en-tête .. Mon application semble bien fonctionner sans elle (ou c'est déjà réglé par défaut) .. Mais si quelqu'un sait comment le faire les données d'en-tête, ou veut encore répondre je serais toujours intéressé .. N'hésitez pas à mettre ce lien comme la réponse et je vais l'accepter .. Merci! – Trevor