2012-01-23 26 views
7

Estoy convirtiendo un programa Delphi 2007 para Delphi XE2 y tener un problema con el siguiente mensaje de error:Delphi XE2 HTTPRIO No se puede recuperar la URL de punto final de servicio/Puerto de

No se puede recuperar el punto final de la URL para el servicio/puerto "/" de WSDL 'http: // .....'

El servicio que estoy conectando está escrito en Delphi 2007.

en 2007 se compila y se ejecuta sin problemas. En XE2 con el mismo código, se cae con el error.

He intentado volver a importar la interfaz utilizando el nuevo importador WSDL con los valores predeterminados establecidos pero sin alegría.

También intenté establecer los nombres de puerto y servicio y el error persiste. No estoy seguro de qué información es útil, pero hasta donde sé, se está conectando.

Este es el funcionamiento del método que estoy usando

<operation name="CheckRegistration"> 
    <soap:operation soapAction="urn:ScubaUpdateWSIntf-IScubaUpdateWS#CheckRegistration" style="rpc"/> 
    <input> 
    <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  namespace="urn:ScubaUpdateWSIntf-IScubaUpdateWS"/> 
    </input> 
    <output> 
    <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:ScubaUpdateWSIntf-IScubaUpdateWS"/> 
    </output> 
</operation> 

Este es el mensaje:

<message name="CheckRegistration10Request"> 
    <part name="centreId" type="xs:int"/> 
    <part name="centreName" type="xs:string"/> 
    <part name="checkActiveOnly" type="xs:boolean"/> 
</message> 
<message name="CheckRegistration10Response"> 
    <part name="return" type="xs:boolean"/> 
</message> 

Además de importar el WSDL, lanzando en una HTTPRIO y llamando al método con

(HTTPRIO1 as IScubaUpdateWS).CheckRegistration(strtoint(tcentre),tcentreName,true); 

No creo que esté haciendo otra cosa y como digo el mismo código funciona en Delph i 2007.

+2

En tiempo de diseño, cuando se establece la propiedad HTTPRIO.WSDLLocation, ¿puede seleccionar las propiedades HTTPRIO.Service y HTTPRIO.Port? Debería poder configurar el Servicio y el Puerto en el momento del diseño, de lo contrario, puede haber algún problema con la URL. He tenido este problema muchas veces, y parece que tan pronto como lo configuro correctamente en el momento del diseño, el error desaparece. –

+0

Hola John, gracias, el puerto está en blanco en el ide de Delphi 2007, así como en Xe2. Configurarlo solo cambia el mensaje de error. Acabo de intentar conectarme a otro WSDL delphi y tengo el mismo problema. Voy a tratar de conectarme a un C# WSDL o uno de los archivos DLL de Amazon para ver si puedo determinar si solo está delphi wsdls que está causando el problema. Publicaré más tarde hoy. –

+0

Acabo de confirmar que Xe2 se puede conectar a un servicio web .net. Debe haber algo en mis servicios web delphi que esté causando el error del punto final. –

Respuesta

2

Resuelto. ¡Especie de! Parece que Delphi XE2 está buscando 2 servicios en los que Delphi 2007 encuentra uno. El programa que estoy usando es leer la ubicación WSDL del registro y configurarlo. En Delphi 2007 está bien porque está tomando el único servicio y haciendo ese puerto/servicio seleccionado. En Delphi XE2 está reiniciando la ubicación de WSDL y tiene como resultado que el puerto y el servicio se borren. Gracias a @JohnEasley por señalarme en la dirección correcta. Para resolver, ahora tengo que usar el siguiente código después de cambiar la ubicación de WSDL. No seguro de que funcionará para cada uno como estoy asumiendo la primera entrada es la que se requiere

servicenames:=Tdomstrings.Create; 
portnames:=Tdomstrings.Create; 
HTTPRIO1.WSDLItems.GetServices(servicenames); 
if servicenames.count>0 then 
begin 
HTTPRIO1.Service:=servicenames[0]; 
HTTPRIO1.WSDLItems.GetPortsForService(servicenames[0],portnames); 
if portnames.count>0 then 
    HTTPRIO1.Port:=portnames[0]; 
end; 
servicenames.clear; 
servicenames.Free; 
portnames.clear; 
portnames.Free; 

Gracias chicos

+0

Richard, tanques para ans pero cuando utilicé el código anterior obtuve un problema, no se encontraron documentos activos. Así que lo hice explícitamente activa. – SSE

+0

¿Cómo resuelve "No hay documentos activos" al establecer propiedades en tiempo de ejecución? – NizamUlMulk

Cuestiones relacionadas