REST bağlantı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

REST bağlantı

Mesaj gönderen m_ekici »

Merhaba Arkadaşlar
Rest Debugger ile REST servera hatasız bağlanıp Token alabiliyorum. Copy Components ile çalışan komponentleri alıp yeni bir proje içinde yapıştırıyorum. Çalışan ayarlar ile 4 adet (TRESTClient, TRESTRequest, TRESTResponse,THTTPBasicAuthenticator) komponenti oluşturuyor. Ama aynı ayarlar ile REST servera bağlanmıyor. 400 Bad request hatası veriyor.

Sebebi ne olabilir?
Tşk.
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: REST bağlantı

Mesaj gönderen ertank »

Rest Debugger test ettiğiniz uygulama çalışma zamanında sorunsuz iletişim kurabiliyor mu?

Bileşenleri kopyaladığınız uygulamada Fiddler vb yardımı ile giden/gelen bilgileri karşılaştırıp bir ipucu bulmanız mümkün olabilir.
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: REST bağlantı

Mesaj gönderen greenegitim »

m_ekici yazdı: 12 Tem 2018 06:20 Merhaba Arkadaşlar
Rest Debugger ile REST servera hatasız bağlanıp Token alabiliyorum. Copy Components ile çalışan komponentleri alıp yeni bir proje içinde yapıştırıyorum. Çalışan ayarlar ile 4 adet (TRESTClient, TRESTRequest, TRESTResponse,THTTPBasicAuthenticator) komponenti oluşturuyor. Ama aynı ayarlar ile REST servera bağlanmıyor. 400 Bad request hatası veriyor.

Sebebi ne olabilir?
Tşk.
soapui,postman gibi araçları kullanıp bunlarda başarılı olan sonuçlarınızda gelen-giden verilerinizi inceleyin header bilgisi istiyor olabilir.
Mücadele güzelleştirir!
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: REST bağlantı

Mesaj gönderen xozcanx »

m_ekici yazdı: 12 Tem 2018 06:20 Merhaba Arkadaşlar
Rest Debugger ile REST servera hatasız bağlanıp Token alabiliyorum. Copy Components ile çalışan komponentleri alıp yeni bir proje içinde yapıştırıyorum. Çalışan ayarlar ile 4 adet (TRESTClient, TRESTRequest, TRESTResponse,THTTPBasicAuthenticator) komponenti oluşturuyor. Ama aynı ayarlar ile REST servera bağlanmıyor. 400 Bad request hatası veriyor.

Sebebi ne olabilir?
Tşk.
Merhaba,
Yeni proje içine aldıktan sonra hiçbir değişiklik yapmadan RESTRequest üzerinde fare ile sağ tıklama yaptığınız açılan menüden Execute dediğinizde hata almamanız gerekiyor. Eğer burada bir hata var ise Rest Debugger kaynaklı bir sorun olabilir.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: REST bağlantı

Mesaj gönderen m_ekici »

Tşk. Fiddler işimi çözdü.
Paket içerisindeki şifre farklı formatta ve grand_type alanı olmadan gidiyormuş.
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: REST bağlantı

Mesaj gönderen m_ekici »

TRESTResponse ile alınan contentin içindeki veriyi parçalamanın kolay bir örneği var mı?
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: REST bağlantı

Mesaj gönderen m_ekici »

Cevabı da ben yazayım

Kod: Tümünü seç

   L_RESTRequest.Execute;
   case L_RESTResponse.StatusCode of
    200 : begin // Hata yok 
          inforest:=L_RESTResponse.Content;
          try
             LJSONObject  := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(infoRest), 0) as TJSONObject;
             TokenStr         :=LJSONObject.Values['access_token'].Value;
          finally
             LJSONObject.Free
          end;
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: REST bağlantı

Mesaj gönderen ertank »

m_ekici yazdı: 13 Tem 2018 11:52 TRESTResponse ile alınan contentin içindeki veriyi parçalamanın kolay bir örneği var mı?
TRESTResponse ile gelen ham veri olmadan yardımcı olmak çok mümkün olmaz.
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: REST bağlantı

Mesaj gönderen m_ekici »

Merhaba
İlginç bir durum oluyor. Aynı komponeti hem POST hem de GET işlemi için kullanmak istiyorum. parametreler farklı olduğu için1. işlemden sonra

Kod: Tümünü seç

L_RESTRequest.Params.Clear;
komutunu kullanmak istedim. Bu komutu kullanmadan çalıştırırsam token alıyor. Clear komutu yazmadan önce Fiddler ile giden pakete baktığımda

Kod: Tümünü seç

grant_type=password&username=
normal gidiyor. Ama clear komutundan sonra aynı parametre

Kod: Tümünü seç

grant_type=password%26username%3D
olarak gidiyor. Buradaki özel karakterler değişiyor. Bunun sebebi nedir?
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: REST bağlantı

Mesaj gönderen m_ekici »

Birine lazım olursa
parametre eklerken [poDoNotEncode] komutu eklemek gerekiyormuş;

Kod: Tümünü seç

L_RESTRequest.Params.AddItem( 'grant_type', ParamStr, TRESTRequestParameterKind.pkGETorPOST, [poDoNotEncode]);
Cevapla