2013-04-17 3 views
1

Использование Delphi 2005, я импортирования WSDL здесь: https://certtransaction.elementexpress.com/express.asmx?wsdlDELPHI: WSDL Ошибка импорта

Когда я импортировать этот WSDL, один из типов «TransactionSetup» и правильно не импортировать. Согласно документации «TransactionSetup» должны иметь следующее:

<s:complexType name="TransactionSetup"> 
<s:sequence> 
<s:element minOccurs="0" maxOccurs="1" name="TransactionSetupID" type="s:string"/> 
<s:element minOccurs="0" maxOccurs="1" name="TransactionSetupAccountID" type="s:string"/> 
<s:element minOccurs="0" maxOccurs="1" name="TransactionSetupAcceptorID" type="s:string"/> 
<s:element minOccurs="0" maxOccurs="1" name="TransactionSetupApplicationID" type="s:string"/> 
<s:element minOccurs="0" maxOccurs="1" name="TransactionSetupApplicationName" type="s:string"/> 
<s:element minOccurs="0" maxOccurs="1" name="TransactionSetupApplicationVersion" type="s:string"/> 
<s:element minOccurs="1" maxOccurs="1" name="TransactionSetupMethod" type="tns:TransactionSetupMethod"/> 
<s:element minOccurs="1" maxOccurs="1" name="Device" type="tns:Device"/> 
<s:element minOccurs="1" maxOccurs="1" name="Embedded" type="tns:BooleanType"/> 
<s:element minOccurs="1" maxOccurs="1" name="CVVRequired" type="tns:BooleanType"/> 
<s:element minOccurs="1" maxOccurs="1" name="AutoReturn" type="tns:BooleanType"/> 
<s:element minOccurs="0" maxOccurs="1" name="CompanyName" type="s:string"/> 
<s:element minOccurs="0" maxOccurs="1" name="LogoURL" type="s:string"/> 
<s:element minOccurs="0" maxOccurs="1" name="Tagline" type="s:string"/> 
<s:element minOccurs="0" maxOccurs="1" name="WelcomeMessage" type="s:string"/> 
<s:element minOccurs="0" maxOccurs="1" name="ReturnURL" type="s:string"/> 
<s:element minOccurs="0" maxOccurs="1" name="ReturnURLTitle" type="s:string"/> 
<s:element minOccurs="0" maxOccurs="1" name="OrderDetails" type="s:string"/> 
<s:element minOccurs="0" maxOccurs="1" name="ProcessTransactionTitle" type="s:string"/> 
<s:element minOccurs="0" maxOccurs="1" name="ValidationCode" type="s:string"/> 
<s:element minOccurs="1" maxOccurs="1" name="DeviceInputCode" type="tns:DeviceInputCode"/> 
</s:sequence> 
</s:complexType> 

, что я получаю:

// ************************************************************************ // 
    // Namespace : https://transaction.elementexpress.com 
    // ************************************************************************ // 
    TransactionSetup = class(TRemotable) 
    private 
    Fcredentials: Credentials; 
    Fapplication: Application; 
    Fterminal: Terminal; 
    Ftransaction: Transaction; 
    FtransactionSetup: TransactionSetup; 
    Faddress: Address; 
    FpaymentAccount: PaymentAccount; 
    FextendedParameters: ArrayOfExtendedParameters; 
    public 
    destructor Destroy; override; 
    published 
    property credentials: Credentials read Fcredentials write Fcredentials; 
    property application: Application read Fapplication write Fapplication; 
    property terminal: Terminal read Fterminal write Fterminal; 
    property transaction: Transaction read Ftransaction write Ftransaction; 
    property transactionSetup: TransactionSetup read FtransactionSetup write FtransactionSetup; 
    property address: Address read Faddress write Faddress; 
    property paymentAccount: PaymentAccount read FpaymentAccount write FpaymentAccount; 
    property extendedParameters: ArrayOfExtendedParameters read FextendedParameters write FextendedParameters; 
    end; 

Одна вещь, которую я нашел, есть метод и тип как названный «TransactionSetup» и представляется, что импортер каким-то образом фиксирует параметры метода как параметры типа. Вот импортирован метод:

ExpressSoap = interface(IInvokable) 
    ['{83D77575-DBDE-3A05-D048-60B2F6BCDFE6}'] 
    procedure TransactionSetup(const credentials: Credentials; const application: Application; const terminal: Terminal; const transaction: Transaction; const transactionSetup: TransactionSetup; const address: Address; const paymentAccount: PaymentAccount; const extendedParameters: ArrayOfExtendedParameters; out response: Response); stdcall; 

Есть ли каким-то образом, чтобы импортер получить правильные параметры типа для типа «TransactionSetup»?

ответ

3

Я использую Delphi 7. У меня была аналогичная проблема. Я загрузил импортер обновлений WSDL и WebService/SOAP. Это обновление совместимо с D2007, D7, D2005 и D2006:
http://cc.embarcadero.com/Item/24535

Если вам нужно больше информации см мой блог. По-испански, извините: http://www.3engine.net/wp/2010/02/invocando-un-servicio-web-wcf-desde-delphi-7