Do tài liệu bị thiếu cho Delphi Chromium Embedded, tôi sẽ tham khảo các yêu cầu cần thiết để gửi yêu cầu web cho phiên bản C++ của CEF. Vì vậy, bạn cần sử dụng phương thức LoadRequest
để gửi yêu cầu trong Chromium. Để sử dụng nó, bạn cần thể hiện đối tượng của lớp đối tượng yêu cầu CefRequest
cùng với các đối tượng HeaderMap
và CefPostData
cho tiêu đề yêu cầu và đặc tả dữ liệu.
Mở rộng trên Henri Gourvest của (tác giả của wrapper Delphi CEF) ví dụ từ this thread
, bạn có thể trong Delphi thử một cái gì đó giống như pseudo-code sau:
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;
Cùng nên làm một phiên bản khác của các mã trên :
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;
trong chủ đề này có [ 'các example'] (https://groups.google.com/forum/?fromgroups=#!topic/delphichromiumembedded/r1_ytEvBHEs) của một yêu cầu POST do Delphi CEF wrapper tự tác giả. Nếu tôi sẽ đến Delphi và tìm một nơi để kiểm tra điều đó, tôi sẽ đăng bài này như là một câu trả lời (nếu ai đó sẽ không nhanh hơn :-) – TLama
Cảm ơn bạn, tôi sẽ xem xét nó. – Trevor
Vì vậy, tôi đã nhận nó làm việc .. (với TLama ví dụ của bạn) Tất cả ngoại trừ việc thêm dữ liệu tiêu đề .. Ứng dụng của tôi dường như chạy tốt mà không có nó (hoặc nó đã được thiết lập mặc định) .. Nhưng nếu có ai biết làm thế nào để làm điều đó với các dữ liệu tiêu đề, hoặc muốn vẫn trả lời tôi vẫn sẽ được quan tâm .. Hãy thoải mái để đặt liên kết đó là câu trả lời và tôi sẽ chấp nhận nó .. Cảm ơn! – Trevor