Newsgroup: it.comp.lang.delphi
Titolo: REST - Login primi passi

Ciao a tutti,
  sto muovendo i primi passi con i web service e i componenti REST di 
delphi.
C'e' un sito per l'invio dei messaggi sms (skebby) che, una volta 
autenticati, ritorna due chiavi di accesso.
Tramite browser non ci sono problemi per avere i due dati utilizzando come 
stringa di collegamento la stringa
 
https://api.skebby.it/API/v1.0/REST/login=USER_NAME&password=PASSWORD
'
 
ed effettivamente, con le corrette credenziali, ritorna i due valori 
(userkey e sessionkey).
 
Per avere un qualcosa di piu' flessibile sto cercando di portare il tutto in 
form dove sono presenti
2 edtit per username e password
1 TRESTClient
1 TRESTRequest
1 TRESTResponse
1 THTTPBasicAuthenticator
1 bottone
 
tutti opportunamente linkati.
 
nell'evento onclick del bottone ho
 
THTTPBasicAuthenticator.username:=edt1.text
THTTPBasicAuthenticator.password:=edt2.text
TRESTClient.BaseHurl:=
https://api.skebby.it/API/v1.0/REST/
';
TRESTRequest.Exceute.
 
Mi ritorna sempre l'errore
 
Response 400 - bad request
 
Evidentemente sbaglio qualcosa ...
Mi potete dire dove sto sbagliando ?
 
Grazie
 
Ciao
Daniele
 
 
 
 

 
 
Prima di tutto sbagli ad utilizzare THTTPBasicAuthenticator. Quando dovresti 
semplicemente inviare una GET all'indirizzo 
https://api.skebby.it/API/v1.0/REST/login=USER_NAME&password=PASSWORD
 
 
Basic Authentication è un'altra cosa:
 
https://it.wikipedia.org/wiki/Basic_access_authentication
 
 
In seconda battuta io utilizzerei TNetHTTPClient e non TRESTClient...
 
HTH,
David
 
 

Ciao David,
 
[]
Prima di tutto sbagli ad utilizzare THTTPBasicAuthenticator. Quando dovresti
semplicemente inviare una GET all'indirizzo 
https://api.skebby.it/API/v1.0/REST/login=USER_NAME&password=PASSWORD
 
 
Basic Authentication è un'altra cosa:
 
https://it.wikipedia.org/wiki/Basic_access_authentication
 
 
In seconda battuta io utilizzerei TNetHTTPClient e non TRESTClient...
[]
 
seguendo il tuo consiglio ho provato ad usare TNetHTTPClient ma non riesco a 
fare progressi.
Probabilmente sto sbagliando qualcosa a livello di settaggi.
 
Ecco il codice che sto usando nell'evento onclick del bottone dove
mmo1:TMemo
Params : TStringList
 
begin
mmo1.Lines.Clear;
LHTTP := TNetHTTPClient.Create(nil);
try
  Params := TStringList.Create;
  try
    Params.Add('login=' + Edt1.text);
    Params.Add('password=' + Edt2.text); // ma anche con '&password' non 
cambia nulla
    Mmo1.Lines.Text := LHTTP.Post('
https://api.skebby.it/API/v1.0/REST/
', 
Params).ContentAsString;
  finally
    Params.Free;
  end;
finally
  LHTTP.Free;
end;
 
mi ritorna sempre questo errore
 
<RestError><error_type>UnknownErrorException</error_type><code>400</code><error_message>Unknown 
error</error_message></RestError>
 
Qualche suggerimento e/o esempio su come settare il componente? (per esempio 
dove imposto il get ?)
 
Grazie
 
Ciao
 
Daniele
 
 
 

 end;
 
La stringa deve essere unica, non divisa in due parti:
 
https://api.skebby.it/API/v1.0/REST/login=USER_NAME&password=PASSWORD
 
 
Params non ti serve!
 
In pratica così:
 
LCommand := '
https://api.skebby.it/API/v1.0/REST/login=
' + Edit1.Text + '&password=' 
+ Edit2.Text;
Memo1.Lines.Text := LHTTP.Post(LCommand).ContentAsString;
 
Controlla se il comando corretto è POST oppure GET, questo non lo ho verificato.
 
HTH
David
 
 

Ciao David,
  dopo diversi tentativi sono riuscito nell'intento di effettuare il login 
!!!
Sono riusciuto con TRESTClient, mentre con TNetHTTPClient mi ritorna ancora 
bad request.
Per motivi di (in)comprensione sto continuando a testare con TNetHTTPClient 
... ma ad ora ... nessun progresso !!
 
Ti aggiorno sui progressi ...
 
Ciao
 
Daniele
 
 

Salve Daniele,
sto anch'io facendo i primi passi con il componente TRest e skeppy... con infinite difficoltà, perchè non trovo nessun esempio.
Alla fine, tu sei riuscito a completare la connessione ed a utilizzare il servizio ?
Potresti condividere il codice funzionante ?
 
Grazie. Eros DV


 Potresti condividere il codice funzionante ?
 
Discussione vecchia ... ma ancora viva....
Ho risolto il problema dell'invio di sms a skebby me nel frattempo sono 
successe un po di cose.
La prima sorpresa, amara, e' che una volta acquistati gli sms questi 
hanno una scadenza di 24 mesi dalla data di acquisto.
Cio' significa che se compri 300 sms e in 2 anni nel utilizzi 50, gli 
altri 250 vengono resettati e li perdi (quello che mi e' capitato).
Inoltre hanno cambiato le regole del gate sms, prima mandavi a un http, 
ora utilizzano un https; fino a quando mandavo messaggi era, tuttavia, 
possibile utilizzare ancora http.
Hanno aggiornato gli esempi in C, C++ e altri linguaggi eccetto che per 
pascal/delhpi e su mi richiesta di averne una per pascal mi hanno 
risposto che i loro programmatori non sanno il pascal e di provvere a 
convertirle e poi condividere il codice (poco professionale dato che 
loro vendono il servizio).
Tuttavia rimane in vita la vecchia libreria per mandare gli sms via http 
che puoi trovare qui con un paio di esempi.
 
http://static.skebby.it/s/apps/gateway/send/skebby-gw-radstudio-delphi-example.zip
 
 
Dato che sono un "hobbista" di pascal / delphi qui
 
https://developers.skebby.it/?_ga=2.144006647.315217604.1637841610-2097736936.1637841610&_gac=1.223795817.1637841610.Cj0KCQiAhf2MBhDNARIsAKXU5GSsDqNT1T2MBkj-Socw3zmtZrpuC4_NYJdgqO2KhCBHOTzP2CZxLJkaAnENEALw_wcB#skebby-rest-api-introduction
 
 
ci sono le api per poter estrarre una unit delphi ed avere una libreria 
attuale.
Se ce la fai ....
 
Grazie per l'eventuale aiuto e alla prossima
 
Ciao
 
Daniele