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: 556
Kayıt: 11 Haz 2003 05:49
Konum: Adana
İletişim:

REST bağlantı

Mesaj gönderen m_ekici » 12 Tem 2018 05: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.

ertank
Üye
Mesajlar: 1201
Kayıt: 11 Eyl 2015 11:45

Re: REST bağlantı

Mesaj gönderen ertank » 12 Tem 2018 06:09

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: 705
Kayıt: 28 Nis 2011 09:33
Konum: İstanbul

Re: REST bağlantı

Mesaj gönderen greenegitim » 12 Tem 2018 07:51

m_ekici yazdı:
12 Tem 2018 05: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: 349
Kayıt: 05 Oca 2012 12:55

Re: REST bağlantı

Mesaj gönderen xozcanx » 13 Tem 2018 08:55

m_ekici yazdı:
12 Tem 2018 05: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: 556
Kayıt: 11 Haz 2003 05:49
Konum: Adana
İletişim:

Re: REST bağlantı

Mesaj gönderen m_ekici » 13 Tem 2018 09:26

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: 556
Kayıt: 11 Haz 2003 05:49
Konum: Adana
İletişim:

Re: REST bağlantı

Mesaj gönderen m_ekici » 13 Tem 2018 10:52

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: 556
Kayıt: 11 Haz 2003 05:49
Konum: Adana
İletişim:

Re: REST bağlantı

Mesaj gönderen m_ekici » 13 Tem 2018 11:14

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
Üye
Mesajlar: 1201
Kayıt: 11 Eyl 2015 11:45

Re: REST bağlantı

Mesaj gönderen ertank » 15 Tem 2018 12:24

m_ekici yazdı:
13 Tem 2018 10: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: 556
Kayıt: 11 Haz 2003 05:49
Konum: Adana
İletişim:

Re: REST bağlantı

Mesaj gönderen m_ekici » 17 Tem 2018 04:02

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: 556
Kayıt: 11 Haz 2003 05:49
Konum: Adana
İletişim:

Re: REST bağlantı

Mesaj gönderen m_ekici » 18 Tem 2018 01:35

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