首页 > 解决方案 > Delphi 10.4 和 TRESTRequest 导致未知错误 Webbroker ISAPI DLL

问题描述

我们在 Xero API 集成中遇到了这个问题。RestRequest.Execute 无缘无故地导致我们出错。但是当我们将它作为独立应用程序(localhost exe)运行时,它运行良好。但是将其转换为 Webbroker ISAPI DLL 并通过 IIS 在我们的域上运行,我们无法通过第一个 RESTRequest.Execute 行。目前使用 Delphi 10.4 和 REST 组件作为具有 ISAPI 的 Webbroker。

function TXero2.GetAccessToken(Authorization, sAuthCode, ReDirectURI: AnsiString): AnsiString;
begin
 TRY

  ResetRESTComponentsToDefaults;
  RESTClient.UserAgent := XeroUserAgent;
  RESTRequest.Client := RESTClient;

  RESTClient.BaseURL := XeroAPIIdentityURL;
  RESTClient.ContentType := 'application/x-www-form-urlencoded';
  RESTClient.Params.AddItem('Authorization', Authorization, TRESTRequestParameterkind.pkHTTPHEADER, [TRESTRequestParameterOption.poDoNotEncode]);
  RESTRequest.Resource := 'connect/token';

  RESTRequest.Params.AddItem('grant_type', 'authorization_code', TRESTRequestParameterKind.pkREQUESTBODY);
  RESTRequest.Params.AddItem('code', sAuthCode, TRESTRequestParameterKind.pkREQUESTBODY);
  RESTRequest.Params.AddItem('redirect_uri', ReDirectURI, TRESTRequestParameterKind.pkREQUESTBODY);

  RESTRequest.Method := TRESTRequestMethod.rmPOST;
  RESTRequest.Execute; //error occurs here

   result := Restresponse.Content;

 EXCEPT
      on e: Exception do
         Codesite.Send(ClassName + '.GetAccessToken: ' + e.Message);
   END;
end;

这实际上只是一个直接的命令,并且在独立时可以正常工作。有人遇到同样的问题吗?

标签: delphi

解决方案


推荐阅读