2009-11-18 11 views
5

Devo effettuare una chiamata a un servizio Web scritto in .NET. L'applicazione che effettua la chiamata è scritta in ColdFusion. Uno dei parametri previsti dal servizio Web è un oggetto DataSet. Non riesco a creare un'istanza di un oggetto .NET DataSet in ColdFusion, come posso passare al servizio Web che accetterà? Non ho problemi a scrivere la richiesta SOAP in XML non elaborato, semplicemente non so come sarebbe l'XML per un oggetto DataSet.Il servizio Web si aspetta un oggetto DataSet, come posso fornirlo tramite ColdFusion o XML non elaborato?

+0

Ho trovato alcune informazioni per convertire un set di dati .NET in qualcosa che CF può usare, ma non il contrario. Inoltre sono state trovate molte UDF in grado di convertire una query in una matrice di strutture, una struttura di array e così via, che .NET potrebbe anche utilizzare. Penso che tu abbia bisogno di documentazione dalla fonte su come si presenta il loro set di dati. – ale

+0

Ad ogni modo, questo potrebbe essere utile: http://coldfusion.sys-con.com/node/47199 – ale

+0

@Al Everett - Sembra davvero molto utile, potrei essere in grado di ottenere ciò che mi serve dal CFC QueryTool collegato nel articolo. Sto guardando il codice ora. –

risposta

5

Tutti gli oggetti che si aspetta .NET vengono serializzati da Axis e sono a vostra disposizione. Sfortunatamente ColdFusion non lo rende facile da raggiungere.

per arrivare al stub è necessario:

  1. accesso WSDL in alcun modo con ColdFusion.
  2. Cercare nella directory dell'app CF gli stub. Si trovano in una directory "subs" , organizzata da WSDL.like: c: \ ColdFusion8 \ stubs \ WS \ WS-21028249 \ com \ foo \ bar \
  3. Copia tutto da "com" in giù in un nuovo directory esistente nel percorso della classe CF. oppure puoi crearne uno come: c: \ ColdFusion8 \ MyStubs \ com \ foo \ bar \
  4. Se hai creato una nuova directory, aggiungila al percorso della classe. e riavviare i servizi CF.
  5. usarli come qualsiasi altro oggetto Java con o CreateObject() MyObj = CreateObject ("java", "com.foo.bar.MyObject");

L'oggetto del set di dati dovrebbe trovarsi lì da qualche parte in qualsiasi formato java che Axis ha deciso che dovrebbe essere. Molto probabilmente si sta andando ad avere bisogno di fare quasi tutto questo in cfscript


EDIT PER DOMANDE

l'oggetto SOAP definirà la struttura dell'oggetto e asse creerà metodi per manipolarlo . Dai un'occhiata all'oggetto Java creato dall'asse. Ricordare che è possibile utilizzare CFDUMP per esaminare i metodi e le proprietà.

Ora ho visto oggetti .NET con cui Axis viene confuso, come la temuta raccolta non generica che diventa un "ArrayOfAnyType". È importante per gli sviluppatori .NET utilizzare Generics nei loro servizi in modo che Axis possa definire correttamente gli array ... se non lo fanno, fa schifo e potresti non essere in grado di utilizzarlo in soap.

ma non ho paura dell'obi-vinto ... c'è un altro modo. È sempre possibile interagire con i servizi Web .NET in un tipo di stile XML/RPC. Non è automatico, è molto parsing di XML, fa schifo, ma a volte è l'unico modo per farlo. Dovresti essere in grado di ottenere un aiuto da .NET accedendo al file .asmx senza il "? Wsdl" alla fine. Se lo fai, .NET genererà un sacco di documentazione ed esempi di come appaiono le chiamate e l'XML. In tal caso, puoi semplicemente creare l'XML e passarlo sul filo come specificato utilizzando cfhttp. In bocca al lupo!

P.S.Devo anche notare che, per quanto ne so, non c'è modo di mescolare il XML laminato a mano con gli oggetti dell'Acido ColdFusion/Apache, non c'è modo di modellare il proprio oggetto per l'uso con CF/Axis ... devi usare il mozzi o niente

+0

@Ryber - Esiste un modo per simulare un set di dati o utilizza gli stub nell'unico modo? – Leigh

+0

@Ryber - Anche se creo un oggetto pseudo-DataSet vuoto usando quel metodo, come posso riempirlo di valori? Immagino che non avrà metodi addRow() convenienti o qualcosa del genere. –

+0

Corpo modificato per domande – ryber

0

Potresti usare JSON?

http://json.org/

+0

Scusa se la mia domanda non è stata chiara. Ho bisogno di interrogare un servizio web .NET usando ColdFusion, e ho bisogno di fornire un oggetto DataSet .NET da ColdFusion in qualche modo. Non vedo come JSON entri nella foto. –

Problemi correlati