将WSDL导入Delphi 7时发生堆栈溢出错误



我正试图使用WSDLImporter(以及WSDLImp命令行)将WSDL导入Delphi 7。

当使用WSDLImporter时,Delphi的内存使用量刚刚开始增加,直到它崩溃(没有错误)或出现堆栈溢出错误。

当使用命令行工具时,我得到以下

Borland WSDLIMP Version 2.2 - $Rev: 10138 $
Copyright (c) 2007 Borland Software Corporation
Reading: https://api.demo.ezidebit.com.au/v3-3/nonpci?wsdl
Import : https://api.demo.ezidebit.com.au/v3-3/nonpci?wsdl:0
*Error*: http://api.demo.ezidebit.com.au/v3-3/nonpci?xsd=xsd0
*Error*: http://api.demo.ezidebit.com.au/v3-3/nonpci?xsd=xsd1
*Error*: http://api.demo.ezidebit.com.au/v3-3/nonpci?xsd=xsd2
Import : http://api.demo.ezidebit.com.au/v3-3/nonpci?wsdl=wsdl0
Import : http://api.demo.ezidebit.com.au/v3-3/nonpci?wsdl
Import : http://api.demo.ezidebit.com.au/v3-3/nonpci?wsdl=wsdl0
Import : http://api.demo.ezidebit.com.au/v3-3/nonpci?wsdl

然后,它一次又一次地循环通过最后2行。显然,这显示了一个错误,但没有关于该错误可能是什么的进一步细节。

我在MicrosoftVisualStudio中创建了一个C#项目,并将其作为web参考添加,没有任何问题,但由于遗留代码的原因,我需要在Delphi7中使用它。

WSDL的地址是

https://api.demo.ezidebit.com.au/v3-3/nonpci?wsdl

我还尝试过使用soapUI加载这个,没有任何错误。

编辑我已经下载了Delphi XE2的试用版(在另一个问题中提到了一个可能的解决方案),它在我的PAS文件的顶部给了我以下内容。(如果需要,我可以上传整个代码)

我假设存在Delphi不喜欢的WSDL文件的问题。关于我可以要求WSDL开发人员更改什么以便导入,有什么线索吗?

// ************************************************************************ //
// The types declared in this file were generated from data read from the
// WSDL File described below:
// WSDL     : https://api.demo.ezidebit.com.au/v3-3/nonpci?wsdl
//  >Import : http://api.demo.ezidebit.com.au/v3-3/nonpci?wsdl=wsdl0
//  >Import : http://api.demo.ezidebit.com.au/v3-3/nonpci?wsdl
//  >Import : https://api.demo.ezidebit.com.au/v3-3/nonpci?wsdl>0
//  >Import : http://api.demo.ezidebit.com.au/v3-3/nonpci?wsdl>0
// Encoding : utf-8
// Version  : 1.0
// (9/02/2012 2:32:14 PM - - $Rev: 37707 $)
// ************************************************************************ //
unit nonpci;
interface
uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;
type
  // ************************************************************************ //
  // The following types, referred to in the WSDL document are not being represented
  // in this file. They are either aliases[@] of other types represented or were referred
  // to but never[!] declared in the document. The types from the latter category
  // typically map to predefined/known XML or Embarcadero types; however, they could also 
  // indicate incorrect WSDL documents that failed to declare or import a schema type.
  // ************************************************************************ //
  // !:CreateScheduleResponse - "https://px.ezidebit.com.au/"[Lit][]
  // !:CreateSchedule  - "https://px.ezidebit.com.au/"[Lit][]
  // !:ClearScheduleResponse - "https://px.ezidebit.com.au/"[Lit][]
  // !:ClearSchedule   - "https://px.ezidebit.com.au/"[Lit][]
  // !:ChangeScheduledAmountResponse - "https://px.ezidebit.com.au/"[Lit][]
  // !:GetPayments     - "https://px.ezidebit.com.au/"[Lit][]
  // !:GetPaymentDetailPlusNextPaymentInfoResponse - "https://px.ezidebit.com.au/"[Lit][]
  // !:ChangeScheduledAmount - "https://px.ezidebit.com.au/"[Lit][]
  // !:GetPaymentsResponse - "https://px.ezidebit.com.au/"[Lit][]
  // !:ChangeScheduledDate - "https://px.ezidebit.com.au/"[Lit][]
  // !:IsSystemLockedResponse - "https://px.ezidebit.com.au/"[Lit][]
  // !:IsSystemLocked  - "https://px.ezidebit.com.au/"[Lit][]
  // !:PaymentExchangeVersionResponse - "https://px.ezidebit.com.au/"[Lit][]
  // !:PaymentExchangeVersion - "https://px.ezidebit.com.au/"[Lit][]
  // !:IsBsbValidResponse - "https://px.ezidebit.com.au/"[Lit][]
  // !:TestFunction    - "https://px.ezidebit.com.au/"[Lit][]
  // !:ChangeScheduledDateResponse - "https://px.ezidebit.com.au/"[Lit][]
  // !:IsBsbValid      - "https://px.ezidebit.com.au/"[Lit][]
  // !:TestFunctionResponse - "https://px.ezidebit.com.au/"[Lit][]
  // !:GetCustomerDetails - "https://px.ezidebit.com.au/"[Lit][]
  // !:ChangeCustomerStatusResponse - "https://px.ezidebit.com.au/"[Lit][]
  // !:AddPayment      - "https://px.ezidebit.com.au/"[Lit][]
  // !:GetCustomerDetailsResponse - "https://px.ezidebit.com.au/"[Lit][]
  // !:ChangeCustomerStatus - "https://px.ezidebit.com.au/"[Lit][]
  // !:AddCustomerResponse - "https://px.ezidebit.com.au/"[Lit][]
  // !:AddCustomer     - "https://px.ezidebit.com.au/"[Lit][]
  // !:EditCustomerDetailsResponse - "https://px.ezidebit.com.au/"[Lit][]
  // !:EditCustomerDetails - "https://px.ezidebit.com.au/"[Lit][]
  // !:AddPaymentResponse - "https://px.ezidebit.com.au/"[Lit][]
  // !:GetPaymentDetail - "https://px.ezidebit.com.au/"[Lit][]
  // !:GetPaymentStatusResponse - "https://px.ezidebit.com.au/"[Lit][]
  // !:GetPaymentDetailPlusNextPaymentInfo - "https://px.ezidebit.com.au/"[Lit][]
  // !:GetPaymentDetailResponse - "https://px.ezidebit.com.au/"[Lit][]
  // !:GetPaymentStatus - "https://px.ezidebit.com.au/"[Lit][]
  // !:DeletePaymentResponse - "https://px.ezidebit.com.au/"[Lit][]
  // !:DeletePayment   - "https://px.ezidebit.com.au/"[Lit][]
  // !:GetScheduledPaymentsResponse - "https://px.ezidebit.com.au/"[Lit][]
  // !:GetScheduledPayments - "https://px.ezidebit.com.au/"[Lit][]

没有回答这个问题,但可能会有所帮助:Free Pascal有一个Web服务工具包,它也有一个WSDL导入器。文件中说,它也适用于Delphi。

"Web Service Toolkit"是FPC、Lazarus和德尔福;"Web服务工具包"旨在简化Web服务FPC、Lazarus和Delphi用户的消费和创作。

http://wiki.freepascal.org/Web_Service_Toolkit

最新更新