Newsgroup: it.comp.lang.delphi
Titolo: Problemi con web service

Ciao a tutti,
ho un problema con l'utilizzo di un web service.
Quando, dopo aver ottenuto l'oggetto THTTPRIO del servizio, provo a
chiamarne un metodo mi  si solleva sempre l'eccezione "Object
reference not set to an instance of an object", di cui in generale
comprendo il significato ma non in questo caso.
Utilizzo BDS2006 ma, per riuscire ad importare correttamente il WSDL
(in quanto utilizza schemaLocation che fanno riferimento a XSD esterni
che l'importer del 2006 non riesce a linkare) ho scaricato da codegear
l'importer aggiornato (del 2007) che correttamente crea la unit del
servizio.
Ho provato a testare il servizio con soapUI e con questo applicativo i
metodi non danno errori e ritornano i valori desiderati.
Potrebbe dipendere dal fatto che BDS2006 non riesce a gestire
correttamente questo servizio?
Un po' di codice (niente di particolare, è come di solito chiamo i
metodi di web service):
var
   servizioStatus:IRmSystemService;
   RichiestaStatoSistema:GetSystemsRequest;
   RispostaStatoSistema:GetSystemsResponse;
begin
    servizioStatus:=GetIRmSystemService(False,'
http://wspacs:55555/
RmSystemService.svc');   //Per ottenere l'istanza del servizio
    RichiestaStatoSistema:=GetSystemsRequest.Create;  //creo oggetto
richiesta
    RichiestaStatoSistema.CallerId:='Prova';  //Inserisco l'unico
parametro della richiesta
    RispostaStatoSistema:=servizioStatus.GetSystems
(RichiestaStatoSistema);  //QUI si solleva l'eccezione
    ShowMessage(RispostaStatoSistema.ErrorMessage);
    //
  //...
end;
Grazie mille per l'aiuto!
Ciao
Matteo

 reference not set to an instance of an object",
Hai verificato che la tua applicazione sia autorizzata ?
Io ho avuto un problema analogo a questo, poi alla fine era un problema 
di windows server e di applicazioni autorizzate..
Verifica se abilitandolo cosi' funziona:
tasto destro su risorse del computer, prorietï¿œ, avanzate, impostazioni 
su "prestazioni", il tab protezione su esecuzione programmi, e aggiungi 
all'elenco delle applicazioni anche la tua.
Ciao
-- 
Morde


Grazie mille per il consiglio, ho provato ma non cambia nulla,
comunque in gioco ci sono solo 2 windows XP in cui la protezione è
normalmente disabilitata.
E poi la prova con soapUI, sempre dallo stesso pc, mi fa pensare che
il problema non sia di quel tipo, credo più nella gestione che fa
Delphi degli oggetti.
Mi sa che proverò ad installare un Delphi 2009/2010 trial e sperare
che vada qualcosa.

 Delphi degli oggetti.
Aggiungo che anche con WebserviceStudio senza alcuna impostazione
particolare non ci sono problemi e vedo la risposta SOAP corretta.


Risolto... più o meno.
Cioè ho fatto la prova creando il medesimo progetto con una versione
trial di Delphi 2010 e funziona senza alcun problema.
Purtroppo anche copiando la unit nuova importata dal WSDL nel vecchio
progetto Delhpi 2006 continua a dare lo stesso tipo di errore, ci deve
essere qualche diversità nelle librerie usate dal 2010 per compilare.
Ho secondo voi una via di uscita che non sia comprare il 2010 ?
Ciao
Matteo

 Ho secondo voi una via di uscita che non sia comprare il 2010 ?
Non usare delphi.. e non e' una battuta ;-)
Non ti resta che acquistare il 2010 oppure ti rivolgi ad un altro 
ambiente di sviluppo / linguaggio quale MONO (gratuito) o Visual studio 
(piu' cheap rispetto a codegear).
Non so se Lazarus/FPC supporta le chiamate ad un WS.. magari qualcuno 
del ng ce lo sa dire (per questo motivo sono in crosspost)
Follow-up settato su it.comp.lang.delphi
Ciao
-- 
Morde

 Morde
Ciao,
ancora grazie per la risposta. Nel forum del sito di Embarcadero mi
hanno detto che aggiornando il runtime della parte SOAP di Delphi
dovrei riuscire a risolvere.
Avevo già scaricato tale aggiornamento ma poi lo avevo usato solo per
importare il WSDL con il WSDLImp.exe aggiornato e stupidamente mi ero
scordato di aggiornare anche i file di runtime contenuti.
Domani provo se tale aggiornamento basta (e mi risparmia il costo del
nuovo 2010...)
ciao e grazie
Matteo

Giusto per completezza e semmai serva a qualcuno con un simile
problema, l'aggiornamento del runtime risolve il problema!
Ciao
MAtteo

 problema, l'aggiornamento del runtime risolve il problema!
Finalmente una buona notizia e grazie per il feed.
Penso a tutti quelli che come me sono infognati nella melma di D5, 
D7... e penso che la politica di codegear in questo senso sia molto ma 
molto poco "community oriented".
Pensa che tutti quelli che hanno delphi dalla versione 1 alla 2005, 
potranno upgradare a prezzo scontato (in quanto utenti registrati) solo 
fino al 31/12... dal 2010 l'upgrade a D2010 costerï¿œ prezzo pieno. (4300 
dollari ragazzi..architet edition.)
Poi, il fatto che non ci siano tagli di edizioni economiche lascia un 
po' a desiderare.. (No Standard Edition,No Personal Edition, No 
Express,No Explorer)
Sto seguendo la questione grazie al blog di Jolyon Smith 
(
http://www.delphifeeds.com/go/f/60729
) e il quadro che ne esce ï¿œ che 
siamo di fronte alla forzatura cui ci ha abituati microsoft: 
commercialmente o ti adegui o sono cavoli tuoi.
Ciao
-- 
Morde