【发布时间】:2012-02-09 02:28:49
【问题描述】:
我正在尝试使用 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
然后一遍又一遍地循环最后两行。显然这显示了一个错误,但没有关于该错误可能的进一步细节。
我在 Microsoft Visual Studio 中创建了一个 C# 项目,并将其添加为 Web 参考,没有任何问题,但由于遗留代码,我也需要在 Delphi 7 中拥有它。
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][]
【问题讨论】:
-
您说的是 Delphi 7,但是在日志中显示“Copyright (c) 2007”,如果我没记错的话,delphi 7 将是“Copyright (c) 2002”,请注意 2007 ! = 2002,是否有可能在您的搜索路径中是 delphi 2006/7 而不是 delphi 7?尝试在 CMD 中调用“C:\Program Files\Borland\Delphi7\bin\WSDLImp.exe”以确保调用正确的 WSDLImp
-
@DorinDuminica,OP 正在使用这个更新的导入器cc.embarcadero.com/Item/24535
-
哎呀,我的错,但也许他应该试一试原来的,它值得一试......
-
@Dorin 抱歉,此屏幕截图必须来自更新的导入程序。尝试使用原始版本,结果相同。
-
哇...已经超过 20 分钟了。并且 D7 的导入器仍在工作...它使用超过 170 MB/RAM 但还没有响应,我正在一个非常灵活的系统上运行它...我想知道 WSDL 是否没有在不同的文件中定义别名可以创建导致堆栈溢出的“永无止境”循环...