2012-02-09 10 views
5

Estoy intentando importar un WSDL a Delphi 7 utilizando el WSDLImporter (así como la línea de comando WSDLImp).Error de desbordamiento de pila al importar WSDL a Delphi 7

Al usar WSDLImporter, el uso de la memoria de Delphi simplemente comienza a aumentar hasta que se bloquea (sin error) o aparece un error de desbordamiento de pila.

Cuando se utiliza la herramienta de línea de comandos me sale el siguiente

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 

Este bucles luego a través de las últimas 2 líneas una y otra vez. Obviamente, esto muestra un error, pero no hay más detalles sobre el error.

He creado un proyecto de C# en Microsoft Visual Studio y lo agregué como referencia web sin ningún problema, pero también necesito tenerlo en Delphi 7 debido al código heredado.

La dirección para el WSDL es

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

También he intentado cargar esta usando soapUI sin ningún error.

EDITAR he descargado la versión de prueba de Delphi XE2 (mencionado en otra pregunta como una posible solución) y me ha dado el siguiente en la parte superior de mi archivo PAS. (Puedo cargar el código completo si es necesario)

Supongo que hay un problema con el archivo WSDL que a Delphi no le gusta. ¿Alguna pista sobre lo que puedo pedirle al desarrollador de WSDL que cambie para que importe?

// ************************************************************************ // 
// 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

que estás hablando Delphi 7, sin embargo en el registro que dice "copyright (C) 2007", si no recuerdo mal, delphi 7 sería "Derechos de autor (c) 2002", nota 2007! = 2002, ¿es posible que en su ruta de búsqueda esté Delphi 2006/7 y no Delphi 7? Intente llamar a "C: \ Program" Files \ Borland \ Delphi7 \ bin \ WSDLImp.exe "en CMD para asegurarse de estar llamando al WSDLImp correcto – ComputerSaysNo

+1

@DorinDuminica, el OP está utilizando este importador actualizado http://cc.embarcadero.com/Item/24535 – RRUZ

+0

ouch , mi mal, pero tal vez debería probar el original, vale la pena intentar ... – ComputerSaysNo

Respuesta

0

no responder a la pregunta, pero tal vez útil: Free Pascal tiene un kit de herramientas de servicio Web que también tiene un importador WSDL. La documentación dice que también funciona con Delphi.

"Servicio Web Toolkit” es un paquete de servicios web para FPC, Lázaro y Delphi;. ‘Servicio Web Toolkit’ se quiere decir para aliviar servicios web el consumo y la creación por los usuarios FPC, Lazarus y Delphi

http://wiki.freepascal.org/Web_Service_Toolkit

+0

Gracias por el consejo. Creo que vamos a tener que escribir un control Active X exponiendo los métodos del servicio web en Visual Studio y consumir eso en Delphi 7. –

+0

¡Me alegro de poder ayudar! Para servicios web muy simples, un enlace Servidor HTTP/Cliente también podría ser una opción. O un middleware orientado a mensajes basado en soluciones de código abierto (vea la página de inicio de mi perfil). – mjn

Cuestiones relacionadas