Domanda

Sto cercando di creare un'applicazione che mi permetta di eseguire un metodo specificato in fase di esecuzione su un servizio Web arbitrario (l'URL di cui fornirò anche in fase di esecuzione). Ho capito come utilizzare Type.InvokeMember per eseguire il metodo arbitrario, ma come posso specificare il servizio Web da utilizzare senza creare una classe proxy.

Ho trovato Come posso chiamare un servizio web senza un riferimento web? che mi aiuterà se ho già il WSDL e cambierà solo l'URL, ma mi piacerebbe poter chiamare qualsiasi servizio web e recuperare il risultato.

Grazie.

È stato utile?

Soluzione

Dovresti dare un'occhiata al Dynamic Proxy per WCF (mi dispiace, ma mi sembra di trovare un link al momento) - è una libreria che ti consente di ispezionare i servizi in fase di esecuzione (se pubblicano i loro metadati) e invoca anche metodi (non è necessario che i metadati lo facciano).

Modifica: in realtà, sembra che ci sia un progetto su Codeplex per fare proprio questo: SIF

Altri suggerimenti

Per WCF, è necessario disporre della classe proxy o dell'interfaccia implementata dal servizio, quindi non è probabile che tu possa farlo tramite WCF (WCF è estendibile all'infinito, tuttavia, quindi potrebbe esserci un modo.

Puoi sempre semplicemente girare un oggetto HttpWebRequest e creare un "vecchio stile" chiamare il servizio e analizzare i risultati da soli.

Dovresti essere in grado di effettuare la chiamata semplicemente utilizzando WebRequest . Dovrai formare il corpo del messaggio , ma non è molto difficile .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top