Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Access Token alma (çözüldü)
#1
Bir ticari programın rest service Acces Token alma metodu. Bunu Visual Studio da aşağıdaki kod ile yapılıyor. Peki delphi de nasıl yapabiliriz.

Buda videosu :







public string getAccessToken(string url, string userName, string password, string firmNr)
 {
     try
     {
         HttpWebRequest req = WebRequest.Create(new Uri(url)) as HttpWebRequest;
         req.Method = "POST";
         req.ContentType = "application/json";
         req.Accept = "application/json";
         req.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(clientId + ":" + clientSecret)));
         byte[] formData = UTF8Encoding.UTF8.GetBytes("grant_type=password"
             + "&username=" + userName
             + "&firmno=" + firmNr
             + "&password=" + password);
         req.ContentLength = formData.Length;
         using (Stream post = req.GetRequestStream())
         {
             post.Write(formData, 0, formData.Length);
         }
         string result = null;
         using (HttpWebResponse resp = req.GetResponse() as HttpWebResponse)
         {
             StreamReader reader = new StreamReader(resp.GetResponseStream());
             result = reader.ReadToEnd();
         }
         dynamic j = JsonConvert.DeserializeObject(result);
         accessToken = j.access_token;
     }
     catch (Exception){}
  
     return accessToken;
 }
Cevapla
#2
Merhaba,
hangi sürüm delphi kullandığınızı belirtseydiniz daha iyi olurdu.
Eğer 10.1 Belir sürümü var ise Tools>Rest Debugger adımını izeleyerek burada ilgili alanları doldurarak acces token bilgisi elde edebilirsiniz.
Buradan doğru sonuç almanız durumunda ilgili ekranda bulunan "Copy Components" butonu ile Bilgileri çalışma ekranınıza alarak buradan devam edebilirsiniz.
Buradan da ilgili Rest Client Nesnelerini inceleyerek işin nasıl yapıldığını rahatlıkla görebilirsiniz.
Bununla ilgili olarak ....\Samples\Object Pascal\Database\RESTDemo\ klasöründe de örnek bir çalışma yer almaktadır.
İyi Çalışmalar.
Cevapla
#3
Cevap için teşekkür ederim. Xe10.1 kullanıyorum ancak Rest Debugger kullanarak sonuca ulaşamadım. Aslında yapmak istediğim aşağıdaki request’i http kullanarak post yapmak.


POST http:10.9.5.50:32001/api/v1/token
Content-Type: application/json
Accept: application/json
Authorization: Basic 23423842kh34j23g482bdkhfsgfg723
Host: 10.9.5.50:32001
Content-Length: 56
Except: 100-continue
Connection: Keep-Alive

grant_type=password&username=Kullanici&firmno=316&password=
Cevapla
#4
Merhaba;
Tam emin değilim ama dikkatimi çeken nokta videoyu incelediğinizde siz de fark edeceksiniz 7:20 - 7:30dk arasındaki kod girişinde header eklemesi yaparken convert.ToBase64String ile şifreleme yapılıyor.Siz Rest Debugger kullanırken şifrelemeden yaptığınız için problem yaşıyor olabilirsiniz.
İyi Çalışmalar.
Cevapla
#5
aşağıdaki kodu deniyorum ama hata alıyorum.



var
  response : string;
  JSONToSend: TStringStream;
begin
  JSONToSend := TStringStream.Create('{}');
  IdHTTP1.Request.CustomHeaders.Clear;
  IdHTTP1.Request.CharSet     := 'utf-8';
  IdHTTP1.Request.ContentType := 'application/json';
  IdHTTP1.Request.Accept:='application/json';
  IdHTTP1.Request.CustomHeaders.Values['Authorization:'] := 'Basic TfsdfsdfsdfsdfZjQ1E9';
  IdHTTP1.Request.Host:='10.9.5.50:32001';
  IdHTTP1.Request.ContentLength :=55;
  IdHTTP1.Request.CustomHeaders.Values['Except:'] := ' 100-continue';
    IdHTTP1.Request.Connection := 'Keep-Alive';
  IdHTTP1.Request.CustomHeaders.Values['grant_type='] := 'password&username=LOGO&firmno=316&password=';
  response := IdHttp1.Post('http://10.9.5.50:32001/api/v1/token', JSONToSend);


Ek Dosyalar Resimler
   
Cevapla
#6
parametreyi aşağıdaki şekilde verince çalıştı.


var
 IdHTTP: TIdHTTP;
 RBody: TStringstream;
 begin
    IdHTTP := TIdHTTP.Create();
    RBody := TStringstream.Create('grant_type=password&username=LOGO&firmno=317&password=');
Cevapla
#7
Lütfen kodlarınızı (ars=delphi) (ars)  tagları arasında yazınız. Yada cevap editöründe "Delphi Kod Ekle" butonunu kullanarak ekleyin.
Not: Yukarıdaki cevaplarınızı ben düzenledim.
There's no place like 127.0.0.1
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  [ÇÖZÜLDÜ]-cxDBPivotGrid Seçili Satır Alan Değeri Alma hi_selamlar 2 81 Dün, Saat: 10:40
Son Yorum: hi_selamlar
  [ÇÖZÜLDÜ] Resource - Uygulama Üzerinden Veri Gömme hyperxman 8 280 09-05-2018, Saat: 16:18
Son Yorum: hi_selamlar
  [ÇÖZÜLDÜ] Google Calendar API Server tipi Erişim Metodu hakkında tecrübesi olan mrmarman 40 1.365 08-05-2018, Saat: 21:34
Son Yorum: Fesih ARSLAN
  WSDL import [ÇÖZÜLDÜ] malitutuncu 11 699 25-04-2018, Saat: 09:10
Son Yorum: malitutuncu
  C Dll indeki Callback Nasıl Çevrilir? (Çözüldü) erkankurtaga 13 987 15-04-2018, Saat: 22:11
Son Yorum: ilgazinho



Konuyu Okuyanlar: 1 Ziyaretçi