2012-01-23 10 views
7

sto conversione di un programma di Delphi 2007 per Delphi XE2 e avendo un problema con il seguente messaggio di errore:Delphi XE2 HTTPRIO Impossibile recuperare l'endpoint URL per servizio/porta

Impossibile recuperare l'endpoint URL per il servizio/port "/" da WSDL 'http: // .....'

Il servizio sto collegando a è scritto in Delphi 2007.

nel 2007 si compila e funziona senza problemi. Su XE2 con lo stesso codice cade sopra con l'errore.

Ho provato a reimportare l'interfaccia utilizzando il nuovo importatore WSDL con i valori predefiniti impostati ma senza gioia.

Ho anche provato a impostare i nomi di porta e servizio e l'errore persiste. Non sono sicuro di quali informazioni siano utili ma, per quanto posso dire, si sta connettendo.

Questo è il funzionamento del metodo che sto 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> 

questo è il messaggio:

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

A parte l'importazione del WSDL, gettando su un HTTPRIO e chiamando il metodo con

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

Non penso di fare altro e come ho detto lo stesso codice funziona su Delph i 2007.

+2

in fase di progettazione, quando si imposta la proprietà HTTPRIO.WSDLLocation, sei quindi in grado di selezionare le proprietà HTTPRIO.Service e HTTPRIO.Port? Dovresti essere in grado di impostare Servizio e Porta in fase di progettazione, in caso contrario, potrebbe esserci qualcosa di sbagliato nell'URL. Ho avuto questo problema molte volte e sembra che non appena l'ho impostato una volta correttamente in fase di progettazione, quindi l'errore scompare .. –

+0

Ciao John, Grazie, la porta è vuota nell'ide del Delphi 2007 così come in Xe2. Impostandolo cambia semplicemente il messaggio di errore. Ho appena provato a collegarmi a un altro delphi WSDL e ho lo stesso problema. Ho intenzione di provare a connettermi a un WSDL C# o ad una delle DLL di Amazon per vedere se riesco a determinare se i suoi wsdls delphi che stanno causando il problema. Pubblicherò più tardi oggi. –

+0

Appena confermato che Xe2 può connettersi a un servizio web .net. Deve esserci qualcosa nei miei servizi web delphi che sta causando l'errore dell'endpoint. –

risposta

2

Risolto. Beh, un po '! Sembra che Delphi XE2 stia trovando 2 servizi dove Delphi 2007 sta trovando uno. Il programma che sto utilizzando sta leggendo la posizione WSDL dal registro e impostandola. Su Delphi 2007 va bene perché sta prendendo il solo ed unico servizio e rendendo quel porto/servizio selezionato. Su Delphi XE2 è in corso il reset della posizione WSDL e la porta e il servizio vengono cancellati. Grazie a @JohnEasley per avermi indicato nella giusta direzione. Per risolvere Ora sto utilizzando il seguente codice dopo aver cambiato il percorso WSDL. Non sicuro che funzionerà per ogni uno come io parto dal presupposto la prima voce è quella che è richiesto

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; 

Grazie ragazzi

+0

Richard, Serbatoi per ans ma quando ho usato sopra il codice ha avuto un problema, non sono stati trovati documenti attivi. Così l'ho reso esplicito attivo. – SSE

+0

Come risolvere "Nessun documento attivo" quando si impostano le proprietà in fase di runtime? – NizamUlMulk

Problemi correlati