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
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.