(17-10-2024, Saat: 10:56)m_ekici Adlı Kullanıcıdan Alıntı: (09-10-2024, Saat: 13:36)RAD Coder Adlı Kullanıcıdan Alıntı: HTTP protokolunü kullandığından SSL sorunu yok, fakat tasarımsal bir sorun var. GET metodu body içermemeli.
REST mimarilierinde, Body bilgisi POST ile gönderilir.
Sorunun kaynağı bu olabilir.
Sorun body içerisinde göndermemden galiba, mkysoft koduyla çözüm sağladım.
GET metodunda HEADER içinde bilgi gönderebiliyorum değil mi? (Token kullanan servisler header için gönderiyor diye düşünüyorum) Bununla ilgili bir örnek bulamadım.
CARI_REF=Request.ContentFields.Values['CARI_REF']) i alıyorum.
Header içinde gönderilen (Authorization veya faklı) parametreleri nasıl alıyoruz?
Anladığım Kadarıyla bir client uygulamadan (örn. mobil) header içinde göndereceğiniz bir bilgiyi sunucu tarafında okumak istiyorsunuz.
Mobil tarafta gönderdiğimiz header içeriğini görmek için dönen JSON içine ekledim.
Header daki veriyi siz sunucudan tekrar mobile geri döndürmeyin sakın.
procedure TWebModule1.WebModule1headertestAction(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
HeaderOzelBilgi: string;
begin
HeaderOzelBilgi := Request.GetFieldByName('OzelBilgi');
Response.Content := '{"success":{"message":"Ars REST Server","status_code":200, "OzelBilgi":"' + HeaderOzelBilgi + '"}}';
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
RESTRequest1.Params.Clear;
RESTRequest1.Params.AddItem('OzelBilgi', edtHeaderBilgisi.Text, TRESTRequestParameterKind.pkHTTPHEADER,
[TRESTRequestParameterOption.poDoNotEncode]);
RESTRequest1.Execute;
if RESTResponse1.Status.SuccessOK_200 then
begin
Memo1.Lines.Add('İşlem Başarılı!');
Memo1.Lines.Add('______________________________________________________');
Memo1.Lines.Add('Sonuç:');
Memo1.Lines.Add(RESTResponse1.JSONValue.Format());
Memo1.Lines.Add('______________________________________________________');
Memo1.Lines.Add('Header Özel Bilgi:');
Memo1.Lines.Add(RESTResponse1.JSONValue.P['success.OzelBilgi'].Value);
end
else
Memo1.Text := RESTResponse1.Content;
end;
object RESTClient1: TRESTClient
Accept = 'application/json, text/plain; q=0.9, text/html;q=0.8,'
AcceptCharset = 'utf-8, *;q=0.8'
BaseURL = 'http://localhost:8080/headertest'
Params = <>
SynchronizedEvents = False
Left = 48
Top = 8
end
object RESTRequest1: TRESTRequest
AssignedValues = [rvConnectTimeout, rvReadTimeout]
Client = RESTClient1
Params = <>
Response = RESTResponse1
SynchronizedEvents = False
Left = 56
Top = 72
end
object RESTResponse1: TRESTResponse
ContentType = 'application/json'
Left = 56
Top = 128
end