Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Delphi RIO da THTTPRio.WebNode.BeforePost Değişikliği
#1
Merhaba değerli üyeler , 
Delphi Tokyo (10.2) dahil olmak üzere Soap Web Servis istemci uygulamaları tarafında gerek zaman aşımını ayarlama gerekse ek HTTP Header bilgisi eklemek amacıyla , 
THTTPRIO nesnesinin WebNode özelliğinin BeforePost olayını aşağı da ki gibi kullanıyordum;

procedure TForm1.rio1HTTPWebNode1BeforePost(
  const HTTPReqResp: THTTPReqResp; Data: Pointer);
var TimeOut : integer;
intUserName , intPassWord : String ;
begin
TimeOut := 600000; // 10dk = (1000 * 60 * 10) ;

InternetSetOption(Data,
     INTERNET_OPTION_RECEIVE_TIMEOUT,
     Pointer(@TimeOut),
     SizeOf(TimeOut));


     intUserName := 'blabla';
     intPassWord := 'blabla';


     HttpAddRequestHeaders(Data, PChar(intUserName),
      Length(intUserName), HTTP_ADDREQ_FLAG_ADD);

      HttpAddRequestHeaders(Data, PChar(intPassWord),
      Length(intPassWord), HTTP_ADDREQ_FLAG_ADD);



end;

Delphi 10.2 ye kadar aşağıdaki gibi olan metodun deseni ;
procedure TForm1.rio1HTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp; Data: Pointer);


Delphi RIO (10.3) itibariyle aşağıda ki gibi değişti ;
procedure TForm1.rio1HTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp; Client: THTTPClient);

Data yerine Client geldi, 
Sorunuma geçmeden önce aydınlatıcı bir bilgi olarak , üstteki olan metodu içinde dönüş zaman aşımını uygulamak için ek yönteme gerek kalmadı THTTPRIO.HTTPWebNode.ReceiveTimeOut  özelliği olarak eklendi, dolayısıyla  InternetSetOption API sini kullanmaya gerek kalmamış oldu.

Ancak halen HttpAddRequestHeaders API sini kullanarak ek başlık gilbisi gönderme ihtiyacım var , ancak API nin talep ettiği Request in Pointer bilgisini önceden aldığım  Data değişkeni yeni metodda yer almadığı için takıldım, Data yerine gelen Client nesnesi ile yol almak gerekir düşüncesindeyim.
Cevapla
#2
(30-03-2020, Saat: 14:14)vkamadan Adlı Kullanıcıdan Alıntı: Merhaba değerli üyeler , 
Delphi Tokyo (10.2) dahil olmak üzere Soap Web Servis istemci uygulamaları tarafında gerek zaman aşımını ayarlama gerekse ek HTTP Header bilgisi eklemek amacıyla , 
THTTPRIO nesnesinin WebNode özelliğinin BeforePost olayını aşağı da ki gibi kullanıyordum;

procedure TForm1.rio1HTTPWebNode1BeforePost(
  const HTTPReqResp: THTTPReqResp; Data: Pointer);
var TimeOut : integer;
intUserName , intPassWord : String ;
begin
TimeOut := 600000; // 10dk = (1000 * 60 * 10) ;

InternetSetOption(Data,
     INTERNET_OPTION_RECEIVE_TIMEOUT,
     Pointer(@TimeOut),
     SizeOf(TimeOut));


     intUserName := 'blabla';
     intPassWord := 'blabla';


     HttpAddRequestHeaders(Data, PChar(intUserName),
      Length(intUserName), HTTP_ADDREQ_FLAG_ADD);

      HttpAddRequestHeaders(Data, PChar(intPassWord),
      Length(intPassWord), HTTP_ADDREQ_FLAG_ADD);



end;

Delphi 10.2 ye kadar aşağıdaki gibi olan metodun deseni ;
procedure TForm1.rio1HTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp; Data: Pointer);


Delphi RIO (10.3) itibariyle aşağıda ki gibi değişti ;
procedure TForm1.rio1HTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp; Client: THTTPClient);

Data yerine Client geldi, 
Sorunuma geçmeden önce aydınlatıcı bir bilgi olarak , üstteki olan metodu içinde dönüş zaman aşımını uygulamak için ek yönteme gerek kalmadı THTTPRIO.HTTPWebNode.ReceiveTimeOut  özelliği olarak eklendi, dolayısıyla  InternetSetOption API sini kullanmaya gerek kalmamış oldu.

Ancak halen HttpAddRequestHeaders API sini kullanarak ek başlık gilbisi gönderme ihtiyacım var , ancak API nin talep ettiği Request in Pointer bilgisini önceden aldığım  Data değişkeni yeni metodda yer almadığı için takıldım, Data yerine gelen Client nesnesi ile yol almak gerekir düşüncesindeyim.

Merhaba ,

ilgili metoda yeni gelen Client:THTTPClient nesnesinde yer alan CustomHeaders koleksiyonuyla işi çözebiliyoruz.
Client.CustomHeaders['login_username'] :=  'blabla';
Client.CustomHeaders['login_password'] :=  'blabla';

Aslında gayet güzel olmuş derli toplu ancak dokümantasyon olmayınca keşfetmek vakit alıyor.
Cevapla
#3
(31-03-2020, Saat: 09:46)vkamadan Adlı Kullanıcıdan Alıntı:
(30-03-2020, Saat: 14:14)vkamadan Adlı Kullanıcıdan Alıntı: Merhaba değerli üyeler , 
Delphi Tokyo (10.2) dahil olmak üzere Soap Web Servis istemci uygulamaları tarafında gerek zaman aşımını ayarlama gerekse ek HTTP Header bilgisi eklemek amacıyla , 
THTTPRIO nesnesinin WebNode özelliğinin BeforePost olayını aşağı da ki gibi kullanıyordum;

procedure TForm1.rio1HTTPWebNode1BeforePost(
  const HTTPReqResp: THTTPReqResp; Data: Pointer);
var TimeOut : integer;
intUserName , intPassWord : String ;
begin
TimeOut := 600000; // 10dk = (1000 * 60 * 10) ;

InternetSetOption(Data,
     INTERNET_OPTION_RECEIVE_TIMEOUT,
     Pointer(@TimeOut),
     SizeOf(TimeOut));


     intUserName := 'blabla';
     intPassWord := 'blabla';


     HttpAddRequestHeaders(Data, PChar(intUserName),
      Length(intUserName), HTTP_ADDREQ_FLAG_ADD);

      HttpAddRequestHeaders(Data, PChar(intPassWord),
      Length(intPassWord), HTTP_ADDREQ_FLAG_ADD);



end;

Delphi 10.2 ye kadar aşağıdaki gibi olan metodun deseni ;
procedure TForm1.rio1HTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp; Data: Pointer);


Delphi RIO (10.3) itibariyle aşağıda ki gibi değişti ;
procedure TForm1.rio1HTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp; Client: THTTPClient);

Data yerine Client geldi, 
Sorunuma geçmeden önce aydınlatıcı bir bilgi olarak , üstteki olan metodu içinde dönüş zaman aşımını uygulamak için ek yönteme gerek kalmadı THTTPRIO.HTTPWebNode.ReceiveTimeOut  özelliği olarak eklendi, dolayısıyla  InternetSetOption API sini kullanmaya gerek kalmamış oldu.

Ancak halen HttpAddRequestHeaders API sini kullanarak ek başlık gilbisi gönderme ihtiyacım var , ancak API nin talep ettiği Request in Pointer bilgisini önceden aldığım  Data değişkeni yeni metodda yer almadığı için takıldım, Data yerine gelen Client nesnesi ile yol almak gerekir düşüncesindeyim.

Merhaba ,

ilgili metoda yeni gelen Client:THTTPClient nesnesinde yer alan CustomHeaders koleksiyonuyla işi çözebiliyoruz.
Client.CustomHeaders['login_username'] :=  'blabla';
Client.CustomHeaders['login_password'] :=  'blabla';

Aslında gayet güzel olmuş derli toplu ancak dokümantasyon olmayınca keşfetmek vakit alıyor.


Üstat aynı metotları ( hatta fazladan birkaç yolda ) denedik ancak biz hata almaya devam ediyoruz?
Client.CustomHeaders['Authorization'] := 'Basic ' + IdEncoderMIME1.EncodeString('user:password');
Girdim İlim Meclisine, 
Eyledim Kıldım Talep, 

Dediler İlim Geride, 
İlla Edep İlla Edep.

Yunus Emre
WWW
Cevapla
#4
(26-12-2021, Saat: 01:13)idealist Adlı Kullanıcıdan Alıntı:
(31-03-2020, Saat: 09:46)vkamadan Adlı Kullanıcıdan Alıntı: Merhaba ,

ilgili metoda yeni gelen Client:THTTPClient nesnesinde yer alan CustomHeaders koleksiyonuyla işi çözebiliyoruz.
Client.CustomHeaders['login_username'] :=  'blabla';
Client.CustomHeaders['login_password'] :=  'blabla';

Aslında gayet güzel olmuş derli toplu ancak dokümantasyon olmayınca keşfetmek vakit alıyor.


Üstat aynı metotları ( hatta fazladan birkaç yolda ) denedik ancak biz hata almaya devam ediyoruz?
Client.CustomHeaders['Authorization'] := 'Basic ' + IdEncoderMIME1.EncodeString('user:password');

Merhaba , 
HTTP Basic Auth için ek header eklemenize gerek yok , 
HTTPRIO nesnenizin HTTPWebNode özelliği altındaki UserName ve Password alanlarını doldurmanız yeterli.
Cevapla
#5
(26-12-2021, Saat: 13:30)vkamadan Adlı Kullanıcıdan Alıntı:
(26-12-2021, Saat: 01:13)idealist Adlı Kullanıcıdan Alıntı: Üstat aynı metotları ( hatta fazladan birkaç yolda ) denedik ancak biz hata almaya devam ediyoruz?
Client.CustomHeaders['Authorization'] := 'Basic ' + IdEncoderMIME1.EncodeString('user:password');

Merhaba , 
HTTP Basic Auth için ek header eklemenize gerek yok , 
HTTPRIO nesnenizin HTTPWebNode özelliği altındaki UserName ve Password alanlarını doldurmanız yeterli.


Cevap için tekrar teşekkürler Üstat,

Portal Kullanıcı bilgilerini Şifresiz göndermemiz gerekiyormuş... Biz şifreli gönderdiğimiz için hata alıyormuşuz... @mksoft Üstadın da yardımıyla çözüme ulaştık
Girdim İlim Meclisine, 
Eyledim Kıldım Talep, 

Dediler İlim Geride, 
İlla Edep İlla Edep.

Yunus Emre
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Delphi ile geliştirdiğiniz uygulamalar neler? - İki Ödüllü Mr.Developer 23 18.649 21-09-2026, Saat: 15:51
Son Yorum: bajerli
  yapay zeka delphi kl007 9 1.227 26-02-2026, Saat: 09:12
Son Yorum: mrmarman
  Win 11 ve Delphi 7 Minimize sorunu. enigma 7 1.087 11-02-2026, Saat: 10:27
Son Yorum: RAD Coder
Question Delphi formunu nasıl otomatik tam ekran yapabilirim ? erdemklt0 2 670 23-01-2026, Saat: 10:02
Son Yorum: csunguray
  Delphi SLL kullanım sorunu Bay_Y 12 2.195 22-12-2025, Saat: 18:11
Son Yorum: Bay_Y



Konuyu Okuyanlar: 1 Ziyaretçi