Newsgroup: it.comp.lang.delphi
Titolo: XE5 - Utilizzo di un server REST sviluppato in vs2010

Un saluto a tutti.
Ho sviluppato un piccolo servizio REST utilizzando vs2010 ed entity framework.
Uno dei metodi esposti ha una signature di questo tipo:
 
  [WebInvoke(UriTemplate = "/Disney/Create", Method = "POST")]
  public DisneyActor Create(DisneyActor instance)
 
 
DisneyActor è una classe semplicissima:
 
public class DisneyActor
{
  public int ID {get; set;}
  public string Name {get; set;}
}
 
Mo la domanda e': ammesso che lo si possa fare,  come si configura una istanza TRestRequest per invocare questo metodo?
Ho fatto un po' di tentativi per impostare il parametro ma ottengo sempre "Bad request" lato client.
Se non passo nulla e mi limto a url e resource, giustamente il servizio .net si inkazza xche trova i valori a null (e' solo un esperimento giusto per capire come funzionano ste cose...).
 
 
Grazie per ongi risposta.
 
A.

 Mo la domanda e': ammesso che lo si possa fare,  come si configura una istanza TRestRequest per invocare questo metodo?
 
http://lmgtfy.com/?q=TRestRequest+
 

 Mo la domanda e': ammesso che lo si possa fare,  come si configura una istanza TRestRequest per invocare questo metodo?
 
Prima di invocare l'API dal componente Delphi, verifica che non ci siano problemi nel progetto della tua API, provando a invocarla tramite browser oppure usando software specifici e gratuiti: in Delphi c'è un "REST Debugger", oppure puoi provare "Postman" su Chrome (
https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm
) oppure "Fiddler" (
http://www.telerik.com/fiddler
).
 
Se il servizio risponde correttamente, allora passa all'invocazione in Delphi con i componenti REST Client API.
 
Ricordati che il componente *TRestRequest* va collegato a un *TRestClient* debitamente configurato. Il nome delle proprietà di entrambi i componenti è abbastanza intuitivo, tant'è che io li avevo configurati davvero in pochissimi minuti per accedere alla REST API del database CouchDB per una sessione della conferenza ITDevCon (a tal proposito, per vedere come li avevo configurati, puoi scaricarti i miei sorgenti da qui: 
http://bit.ly/IoL6OL
).
 
Il bello di questi componenti è che puoi testarli addirittura a designtime: un bel tasto destro su *TRestRequest* e poi "Execute"!
 
Ciao,
  Marco.
 
-- 
MARCO BREVEGLIERI (Software and Web Developer)
#Home: 
http://bit.ly/marcobreveglieri
 
#Blog: 
http://bit.ly/compilaquindiva
 

 un bel tasto destro su *TRestRequest* e poi "Execute"!
 
Ho gia fatto tutto. 
Un altro metodo accetta come parametro una stringa e quello funziona senza problemi.  
Il mio problema e' la SINTASSI DA USARE LATO XE5 PER PASSARE UN PARAMETRO DI TIPO "ISTANZA DI CLASSE":
 
button1click(sender)
var
  DinesyPeople: TDisneyPeople;
 
begin
 
  DinesyPeople := TDisneyPeople.Create;
  try
    DinesyPeople.Name := edit1.Text;
 
    MyRquest.resource := !cosa!??
    Myrequest.param.... !cosa!
 
pre invocare questo:
 
  [WebInvoke(UriTemplate = "/Disney/Create", Method = "POST")]
  public DisneyActor Create(DisneyActor instance) 
 
Ovviamente (ma non per tutti) ho fatto ricerce massive senza trovare UN SOLO ESEMPIO simile a quello che vorrei provare.
Magari sono da rottamare, non so...
 
Da qui il dubbio se sta cosa e' possibile e/o lecita e/o corretta...
 
 
A.

 Il mio problema e' la SINTASSI DA USARE LATO XE5 PER PASSARE UN PARAMETRO DI TIPO "ISTANZA DI CLASSE":
 
Niente, Google e` troppo dura :)
 
http://docwiki.embarcadero.com/RADStudio/XE5/en/REST_Client_Library#Parameters
 
 
"Next you set the properties of the RESTRequest component. The Resource property of this component contains the actual query-string. In this example, we want to query basic information about an artist, so according to the documentation our query-string could be like '/artist/<name>'. For <name>, you can insert something like Madonna, or whatever you like.
That's it. You can now execute the request in the IDE by right-clicking the RESTRequest component and selecting Execute from the context menu."

 Ovviamente (ma non per tutti) ho fatto ricerce massive senza trovare UN SOLO ESEMPIO simile a quello che vorrei provare.
 
Dai un'occhiata a questo esempio (anche se è stato aggiornato per XE6):
http://docwiki.embarcadero.com/CodeExamples/XE6/en/RESTDemo_Sample
 
 
Ciao!


 
http://docwiki.embarcadero.com/CodeExamples/XE6/en/RESTDemo_Sample
 
 
Si, lo avevo gia' beccato.
Ma non mi sembra che usi parametri "strani".
Controllero' meglio.
 
Ancora grazie.
 
A.