Delphi Can

Orjinalini görmek için tıklayınız: Rest Server e gönderilen bilgiler
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Merhaba
Rest Serverdan bilgi istenirken (Ör. Token alırken) gönderilen bilgilerin HEADER veya BODY içerisinde olmasının farkı (veya problemi) var mı?

İyi Çalışmalar
Body, isteğin detaylarını içeren açık metin kısmıdır.
Header ise özel alandır. Burada yalnızca isteğin özellikleri, kullanıcı doğrulama bilgileri veya özel bir tanımlama yer alır.
Token özel bir veri olduğu için genellikle Header da gönderilir.
(08-02-2025, Saat: 17:04)m_ekici Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba
Rest Serverdan bilgi istenirken (Ör. Token alırken) gönderilen bilgilerin HEADER veya BODY içerisinde olmasının farkı (veya problemi) var mı?

İyi Çalışmalar

Bu konu tamamen karşı servisin veriyi nereden beklediğine bağlı. Başka dilde örnek kod varsa onun üzerinden yürüyebiliriz.

HEADER ve BODY farklı alanlardır. HEADER kısmı Http çağrısının özelliklerini ve bizim eklediğimiz ek bilgileri içerir. BODY kısmı ise POST yöntemiyle yapılan bir HTTP çağrısının içerik kısmını gösterir. Eğer HTTP çağrısını GET yöntemiyle yapıyorsanız karşı taraf BODY (içerik) kısmını kontrol etmeyeceği için büyük ihtimalle parametreler için http paketinin HEADER kısmına bakacaktır.
Tekrar merhaba

aşağıdaki şekilde gönderdiğim şifre içerisindeki Türkçe karakterler farklı çıkıyor. 

Client; 
Test_Request.AcceptCharSet : UTF-8, *;q=0.8
wdbf.Test_RESTRequest.Params.AddItem('Sifre', edPassword.Text, TRESTRequestParameterKind.pkHTTPHEADER);
wdbf.Test_RESTRequest.Params.AddItem('Sifre', edPassword.Text, TRESTRequestParameterKind.pkHTTPHEADER, [poDoNotEncode]);

(2 sini de denedim)

Server ;
SifreStr   := Request.GetFieldByName('Sifre'); 

neyi eksik yapıyorum?
(14-02-2025, Saat: 23:52)m_ekici Adlı Kullanıcıdan Alıntı: [ -> ]Tekrar merhaba

aşağıdaki şekilde gönderdiğim şifre içerisindeki Türkçe karakterler farklı çıkıyor. 

Client; 
Test_Request.AcceptCharSet : UTF-8, *;q=0.8
wdbf.Test_RESTRequest.Params.AddItem('Sifre', edPassword.Text, TRESTRequestParameterKind.pkHTTPHEADER);
wdbf.Test_RESTRequest.Params.AddItem('Sifre', edPassword.Text, TRESTRequestParameterKind.pkHTTPHEADER, [poDoNotEncode]);

(2 sini de denedim)

Server ;
SifreStr   := Request.GetFieldByName('Sifre'); 

neyi eksik yapıyorum?

uses bölümüne System.NetEncoding birimini ekleyin.
Server tarafında ise aşağıdaki gibi kod satırını değiştirin.
SifreStr := TNetEncoding.URL.Decode(Request.GetFieldByName('Sifre'))
Client tarafında ilk kod satırını kullanın.
wdbf.Test_RESTRequest.Params.AddItem('Sifre', edPassword.Text, TRESTRequestParameterKind.pkHTTPHEADER);
bunu denemiştim Smile

teşekkürler
Arkadaşlar kusura bakmayın REST server i bitirene kadar başınızı ağrıtacağım.

REST Server a client tarafından gönderilen

THTTPBasicAuthenticator.Username := 'user';
THTTPBasicAuthenticator.Password := '123';

RESTRequest.Params.AddItem('Authorization', 'basic xxxxxxxxx')

bu alanlar aynı şeyi mi, ifade ediyor?
(16-02-2025, Saat: 23:55)m_ekici Adlı Kullanıcıdan Alıntı: [ -> ]Arkadaşlar kusura bakmayın REST server i bitirene kadar başınızı ağrıtacağım.

REST Server a client tarafından gönderilen

THTTPBasicAuthenticator.Username := 'user';
THTTPBasicAuthenticator.Password := '123';

RESTRequest.Params.AddItem('Authorization', 'basic xxxxxxxxx')

bu alanlar aynı şeyi mi, ifade ediyor?

Evet. Ayrıca, Basic ifadesinden sonraki xxxxxxx bölümü, user:123 kullanıcı adı ve parola çiftinin base64 ile encode edilmiş halidir.
Ok. Tşk.