XE5 RestClient Library issues



我创建了一个FMX Windows应用程序,该应用程序连接到web服务器以获取REST数据。我一直在使用REST客户端、响应、请求和响应数据适配器,并将其连接到客户端数据集。然后,我通过实时绑定将数据集连接到字符串网格。我已经为两个不同的字符串网格做了这件事,没有任何问题,然后我来到了我想提出的最后一个请求,我得到了一些非常奇怪的行为。我在一个数据模块中设置了所有内容,并在IDE中执行了RestRequest,并在RESTResponse中获得了我期望的内容。然后我激活了RESTResponseAdapter和ClientDataset。客户端数据集已经填充,我只需添加字段就可以通过ide添加fielddefs。

我在应用程序上设置了一个计时器来更新字符串网格等,,对两个字符串网格都很好。然而,在最后一个StringGrid中,我得到的只是我最初在IDE中获取的数据。我认为这可能是由于客户端数据集上的一些缓存,所以我在表单上放了一个备忘录,在每次请求执行后,我都会将响应内容发布到备忘录中。。。。奇怪的是,我偶尔会收到服务器当前发送的响应(通过Chrome访问Web服务器进行验证),但有时响应内容是我在IDE中设置时最初请求的数据。所以我回到IDE,从Rest response中清除响应数据。再次尝试并获得相同。。。有时我会得到预期的结果,有时我会收到昨天在IDE中最初得到的响应。然后我想也许是网络服务器在把它发回。因此,通过Web服务器运行相同的REST请求,并且永远不会返回restesponse显示的数据。。。

下面的代码触发了我的计时器。前两组代码运行良好,最后一组代码有缺陷。

  restDataModule.adapterOperators.ClearDataSet;
  restDataModule.cdsOperators.Close;
  restDataModule.responseOperators.Content.Empty;
  restDataModule.reqOnlineOperators.ClearBody;
  restDataModule.reqOnlineOperators.Execute;
  restDataModule.cdsOperators.Open;
  restDataModule.adapterStats.ClearDataSet;
  restDataModule.cdsStats.Close;
  restDataModule.responseOperatorStats.Content.Empty;
  restDataModule.reqOperatorStats.ClearBody;
  restDataModule.reqOperatorStats.Execute;
  restDataModule.cdsStats.Open;
  try
  restDataModule.adapterChats.ClearDataSet;
  restDataModule.cdsChats.Close;
  restDataModule.responseChats.Content.Empty;
  restDataModule.reqChats.ClearBody;
  restDataModule.reqChats.Execute;
  restDataModule.cdsChats.Open;
  except on E: Exception do
    // ignore
    memo1.Lines.Add('Failed!')
  end;
  memo1.Lines.Add(restDataModule.responseChats.Content);

欢迎提出任何建议。

好的,解决方案是使用以下设置向RestClient添加一个参数:-Kind=pkHTTPHEADER名称=缓存控制值=无缓存

简单但难以捉摸的

最新更新