如何使用 Chromium 发送帖子和标题数据?

2024-04-22

我正在尝试将一些代码从 TWebBrowser 转换为 Chromium,但无法弄清楚如何使用 HTTP 请求发送帖子和标头数据。

下面是我正在尝试实现的 TWebBrowser 功能。

var
VHeader, PostData: OleVariant;


PostData := VarArrayCreate([0, Length(XMLString) - 1], varByte) ;    
HeaderData := 'Content-Type: application/x-www-form-urlencoded'+ '\n';

WebBrowser1.Navigate(StrUrl,EmptyParam,EmptyParam,PostData,VHeader);

我如何用 Chromium 做同样的事情?


由于缺少 Delphi Chromium Embedded 的文档,我将参考发送 CEF C++ 版本的 Web 请求所需的要求。因此,您需要使用LoadRequest http://magpcss.org/ceforum/apidocs/projects/%28default%29/CefFrame.html#LoadRequest%28CefRefPtr%3CCefRequest%3E%29Chromium 中发送请求的方法。为了使用它,您需要该对象的实例CefRequest http://magpcss.org/ceforum/apidocs/projects/%28default%29/CefRequest.html请求对象类以及HeaderMap http://magpcss.org/ceforum/apidocs/projects/%28default%29/CefRequest..HeaderMap.html and CefPostData http://magpcss.org/ceforum/apidocs/projects/%28default%29/CefPostData.html请求标头和数据规范的对象。

扩展 Henri Gourvest(Delphi CEF 包装器的作者)的示例this thread https://groups.google.com/forum/?fromgroups=#!topic/delphichromiumembedded/r1_ytEvBHEs,你可以在 Delphi 中尝试类似下面的伪代码:

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;

上述代码的另一个版本也应该做同样的事情:

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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Chromium 发送帖子和标题数据? 的相关文章

  • Windows EventLog:它的操作速度有多快?

    我有一个服务应用程序 它通过 TCP 处理客户端请求并将任何事件写入 Windows EventLog 由于该应用程序预计会在短时间内为许多客户端和每个客户端的大量请求提供服务 假设每秒 1 到 50 个请求 因此我很想知道密集程度 CPU
  • 如何发送/接收 JSON?

    我知道这是一个愚蠢的问题 但我通常不进行 Web 编程 并且被要求发送一些 JSON 数据并接收一些回报 我用谷歌搜索 很清楚如何编码和解码 JSON 数据 但我对此很陌生 我不知道如何与给定的 URL 进行通信并说 这里有一些数据 请发回
  • 在 Pascal 中将文本文件中的字符串读入数组

    使用这个程序 我试图读取一个文件并将其随机打印到控制台 我想知道是否必须使用数组 例如 我可以将字符串分配到一个数组中 然后从数组中随机打印 但是 我不确定如何解决这个问题 另一个问题是 我当前的程序没有从我的文件中读取第一行 我有一个文本
  • Move() 从动态字符串数组中插入/删除项目

    使用 System Move 从字符串数组中插入 删除项目并不像从其他简单数据类型数组中插入 删除项目那么容易 问题是 字符串在 Delphi 中是引用计数的 在引用计数数据类型上使用 Move 需要对内部编译器行为有更深入的了解 这里有人
  • Delphi LZMA减压样本

    我发现在this https stackoverflow com questions 4344976 lzma or 7zip in delphi的线程链接delphi压缩包 https github com ccy delphi zip具
  • 桌面 Delphi 应用程序是否可以通过 Windows 8 认证(使用 Windows 应用程序认证套件)?

    显然 Delphi 任何版本 不支持安全异常处理程序 https forums embarcadero com thread jspa messageID 473469 Visual Studio 中的 SAFESEH 开关 在 Windo
  • 作为属性的类引用

    谷歌对于这类搜索毫无用处 因为你会得到数亿个结果 其中没有一个与特定问题相关 问题很简单 Delphi 中是否可以有类引用属性 如果是这样 怎么办 这是我尝试过的 type TMyObject class end TMyObjectClas
  • Firemonkey - 更新视觉组件

    我们从版本 1 开始就使用 Firemonkey 但仍然发现更新当前在屏幕上可见的组件很困难 在 Firemonkey 中请求重画的 方式 有很多 也许太多了 应用样式 ApplyStyle 事件 主要是当它在屏幕上可见时 请求 repai
  • WebUSB 和 RFID 读取器

    我想知道是否有人有让 RFID 读取器通过 WebUSB 工作的经验 我使用的阅读器是https www parallax com product 28340 https www parallax com product 28340 根据我
  • 使用 GdiPlus 卸载 DLL 时程序挂起

    我有一个加载 DLL 的应用程序 它使用德尔福 GDI 库 http sourceforge net projects delphigdiplus 该应用程序在卸载 DLL 时挂起 调用免费图书馆 https msdn microsoft
  • delphi分组框标题颜色变化

    我正在使用 BDS 2006 想知道您是否可以使用项目中存在的 XPmanifest 更改组框和单选按钮组标题的颜色 因为它始终是蓝色 唯一的方法是重写 Paint 方法TGroupBox http docwiki embarcadero
  • 能否从 Vista Shell 获取 48x48 或 64x64 图标?

    如果 Vista Shell 中存在 48x48 或 64x64 图标 如何使用 SHGetFileInfo 获取在 TImage 中显示图标的句柄 我想从图像列表中选择一个代表文件夹路径的图标 并在 Timage 中显示 48x48 或
  • 如何使用用户输入来寻址 Pascal 中的特定变量(Eval/Exec?)

    我正在尝试在分形程序中做一些非常具体的事情隆起7X http apophysis 7x org 使用的脚本语言是Pascal 该项目是用德尔福写的 https svn code sf net p apophysis7x svn trunk
  • 获取字符、整数和日期字段的字段 oldValue 和 newValue

    我试图只保留表更改的历史记录 所以我想获取一个字段在更改为oldValue之前的值 然后获取它更改为newValue的值 两个值都应转换为字符串 因此 这是该表的一个示例 PartNumber Description 12345 Test
  • 在 Puppeteer 中如何将 Chrome 窗口从默认配置文件切换到所需的配置文件

    我的要求是在新的配置文件上测试 chrome 扩展 我提到https peter sh experiments chromium command line switches https peter sh experiments chromi
  • Delphi XE 中的数据绑定向导 - 可以将其配置为映射到 MSXML 接口吗?

    Delphi XE 中的数据绑定向导生成继承自 Delphi 自己的 DOM ADOM XML v4 实现的类和接口 它似乎不支持针对模式进行验证 解析时验证 选项仅适用于 MSXML 供应商type 从 VCL 源代码以及 IDE 中 X
  • 如何将FireMonkey表单无缝嵌入VCL表单中?

    我使用了中描述的技巧这个问题 https stackoverflow com questions 7315050 delphi xe2 possible to instantiate a firemonkey form in vcl app
  • Delphi 2007 中的 HelpInsight 文档

    我正在使用 D2007 并尝试使用 HelpInsight 功能 自 D2005 起提供 来记录我的源代码 我主要对让 HelpInsight 工具提示正常工作感兴趣 通过各种网上冲浪和实验 我发现了以下内容 使用三斜杠 注释样式比其他记录
  • 如何将 TGifImage 中的帧提取为位图?

    下面的演示尝试在表单的画布上绘制 GIF 这不起作用 图像不会前进 如何让它发挥作用 procedure TForm1 FormCreate Sender TObject begin GIF TGIFImage Create GIF Loa
  • 如何读取注册表项的默认值

    我有一个 Delphi XE2 项目来使用注册表项进行某些操作 所以我定义了以下代码 procedure TMainForm BitBtn01Click Sender TObject var RegistryEntry TRegistry

随机推荐

  • Aurelia 自定义属性中的双向绑定

    UPDATE 看起来这是一个已知的错误 https github com aurelia templated issues 253 https github com aurelia templating issues 253我将其留在这里是
  • 在项目 .d.ts 定义文件中使用 @types 定义

    我正在尝试为我的项目编写一个 d ts 文件来定义一些全局接口 但是 我在该定义文件中使用非全局库类型时遇到问题 特别是我试图引用的 RxJs 对我来说不起作用 我认为最有效的方法是使用三斜杠引用标签来导入 RxJ 的类型 但这不起作用
  • Masonry 插件:调整 div 大小不会导致重新洗牌

    将 Masonry 项目包裹在 1000px 宽的 div 中 我有一个按钮可以使用 jQuery 将 div 大小调整为 2000xaddClass 问题是 Masonry 不会重新排列项目来填充额外的 1000px 空间 我知道调整大小
  • PageViewController - 将变量传递给子视图

    我拥有的 我有一个 ViewController TutorialViewController 和一个 UIPageViewController TutorialPageViewController 故事板上还有 3 个带有 StoryBo
  • Paramiko 和伪 tty 分配

    我正在尝试使用 Paramiko 连接到远程主机并执行许多文本文件替换 i o e client exec command perl p i e s initial replaced g conf 其中一些命令需要作为 sudo 运行 这会
  • 用于创建工作项模板的 TFS 客户端 API?

    当然 很可能在 TFS 中创建工作项 获取工作项列表等 除此之外 我们还需要具有允许用户为各种文件类型创建自己的工作项模板的功能 TFS 客户端 API 是否能够将工作项模板上传到 TFS 服务器 有一种方法可以获取 XML 定义 Micr
  • 在函数内调用 div

    我正在尝试使用 jQuery mobile 1 4 3 创建一个类似于 iOS 警报视图的弹出窗口 我需要从 javascript 事件触发警告消息 例如带有 确定 按钮的确认消息 显示对 Web 服务的 ajax 响应调用 我的第一个问题
  • # jquery移动页面url中的字符

    为什么当我访问我的 jQuery 移动页面时 假设 page php 显示正常 但当我访问同一页面 page php someDetailsHere 时 它 只显示一个白色页面 我该如何解决这个问题 我使用第三方应用程序重定向到我的网页 添
  • 通过 Kafka 消费者重试维持订单保证

    我正在为基于 Kafka 的数据处理管道中的消费者重试设计一个架构 我们正在使用 Kafka 生产者和消费者 并且正在考虑重试主题 如果消费出错 将在这些主题上发送消息 将会有消费者以一定的节奏运行这些重试主题 我读了很多参考架构 但没有一
  • 渲染图表后,从图表对象更改 Highcharts 工具提示格式化程序

    我发现我可以使用 setData 更改系列 并且我知道我可以使用 setExtremes 修改最大值 但我无法弄清楚如何从图表对象设置工具提示格式化程序 我如何更新该字段 如果我有一个图表对象 如何更新其工具提示格式化程序属性 以及plot
  • 如何让我的收据不再重复

    这是一个程序 要求用户输入条形码 然后我的程序找到指定的产品 询问用户他们想要购买多少产品 如果他们想继续 计算总价 然后假设打印出收据 但是我的问题是收据重复其值并且没有四舍五入到小数点后两位 press 0 to stop shoppi
  • 如何在postgreSQL命令中指示在哪个数据库中执行脚本? (类似于SQL Server“use”命令)

    我有以下问题 我需要放入一个在新版本推出之前运行的脚本 该脚本在 PostgreSQL 中启用 pgAgent 的 SQL 代码 但是 此代码应该在维护数据库 postgres 上运行 而我们运行脚本文件的数据库是另一个数据库 我记得在 S
  • 如何检测视频标签上播放的视频的帧速率?

    有什么方法可以通过 javascript 检测视频 html5 标签中引用的视频的帧速率是多少 我还在寻找比特率和编解码器信息 因为 html5 视频播放器与编解码器无关 thanks FPS 存储在video文件的标题 这是您正在寻找的实
  • 使用 Swift array.count 和 arc4random()

    为了让这段代码正常工作 我缺少什么 NodesLeft 是一个 Int let x nodesLeft count let r Int arc4random uniform x 我收到错误 Playground 执行失败 错误 136 40
  • Javascript:在数组末尾重新启动一次循环

    我最近遇到了这个问题 但在任何地方都找不到好的答案 因此有这个问题 我想在到达终点后重新启动循环 但只循环有限的次数 在这个特定的上下文中 我一周中有一系列天 我想使用以下命令显示从今天开始的接下来 7 天的日期名称Date getDay
  • 为什么 C++ 编译器对许多大括号的处理方式不同?

    在下面的 C 20 程序中 我错误地添加了一对额外的弯曲大括号 in B A include
  • 如何在样式组件中访问 Material-ui 的主题

    我将 CRA 与 Material ui 和 Styled Components 类型的样式一起使用 在构建 CSS 时 我想访问 Material ui 的默认主题 package json 的一部分 dependencies react
  • 两点层之间的距离矩阵

    我有两个数组 其中包含不同大小的点坐标 shapely geometry Point Eg Point X Y Point X Y Point X Y Point X Y 我想用距离函数创建这两个数组的 叉积 距离函数来自shapely g
  • RETROFIT 如何解析此响应

    我正在尝试解析这个 json 响应雅虎YQL http chartapi finance yahoo com instrument 1 0 goog chartdata type quote range 1d json使用 Retrofit
  • 如何使用 Chromium 发送帖子和标题数据?

    我正在尝试将一些代码从 TWebBrowser 转换为 Chromium 但无法弄清楚如何使用 HTTP 请求发送帖子和标头数据 下面是我正在尝试实现的 TWebBrowser 功能 var VHeader PostData OleVari