2012-02-09 13 views
5

Sto tentando di importare un WSDL in Delphi 7 utilizzando WSDLImporter (oltre alla riga di comando WSDLImp).Errore di overflow dello stack durante l'importazione di WSDL in Delphi 7

Quando si utilizza WSDLImporter, l'utilizzo della memoria di Delphi inizia ad aumentare finché non si arresta in modo anomalo (nessun errore) o si verifica un errore di overflow dello stack.

Quando si utilizza lo strumento da riga di comando ottengo il seguente

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 

Questo loop poi attraverso le ultime 2 righe più e più volte. Ovviamente questo mostra un errore ma non ci sono ulteriori dettagli su cosa potrebbe essere quell'errore.

Ho creato un progetto C# in Microsoft Visual Studio e aggiunto questo come riferimento Web senza problemi, ma ho bisogno di averlo in Delphi 7 anche a causa del codice legacy.

L'indirizzo per il WSDL è

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

Ho anche provato a caricare questo utilizzando soapUI senza errori.

EDIT Ho scaricato la versione di prova di Delphi XE2 (menzionato in un'altra domanda come una possibile soluzione) e mi ha dato il seguente nella parte superiore del mio file PAS. (Posso caricare l'intero codice se necessario)

Suppongo che ci sia un problema con il file WSDL che a Delphi non piace. Eventuali indizi su cosa posso chiedere allo sviluppatore WSDL di cambiare in modo che possa essere importato?

// ************************************************************************ // 
// 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][] 
+0

si sta parlando di Delphi 7, tuttavia nel registro si dice "Copyright (c) 2007", se non ricordo male, Delphi 7 sarebbe "Copyright (c) 2002", nota il 2007! = 2002, è possibile che nel tuo percorso di ricerca sia delphi 2006/7 e non delphi 7? Prova a chiamare "C: \ Program Files \ Borland \ Delphi7 \ bin \ WSDLImp.exe "in CMD per assicurarti di chiamare il WSDLImp corretto – ComputerSaysNo

+1

@DorinDuminica, l'OP sta utilizzando questo importatore aggiornato http://cc.embarcadero.com/Item/24535 – RRUZ

+0

ouch , il mio male, ma forse dovrebbe dare una prova quella originale, vale la pena uno scatto ... – ComputerSaysNo

risposta

0

Non rispondendo alla domanda, ma forse utile: Free Pascal ha un servizio Web Toolkit che ha anche un importatore WSDL. La documentazione dice che funziona anche con Delphi.

"Servizio Web Toolkit” è un pacchetto di servizi web per la FPC, Lazzaro e Delphi;. ‘Web Service Toolkit’ ha lo scopo di facilitare i servizi web il consumo e la creazione dagli utenti FPC, Lazzaro e Delphi

http://wiki.freepascal.org/Web_Service_Toolkit

+0

Grazie per il suggerimento. Pensa che dovremo scrivere un controllo Active X esponendo i metodi del servizio web in Visual Studio e consumarlo in Delphi 7. –

+0

Contento di poterti aiutare! Per servizi Web molto semplici, un collegamento HTTP Server/Client potrebbe anche essere un'opzione. O un middleware orientato ai messaggi basato su soluzioni open source (vedi la home page del mio profilo). – mjn

Problemi correlati