Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
ıdHTTP Post hakkında? [Çözüldü]
#1
Star 
Merhaba,
Konu web servisle alakalı bir durum aslında :/
Web servis import edilirken NVİ KPS sisteminde olduğu gibi bazı tanımlamalar ve kullanımda sıkıntı yaşamaktayım.
Araştırma yaparken karşılaştığım bir kaynak doğrultusunda ıdHTTP ile yapılabilir gibi geldi  :ss
SOAP-UI testlerinde sonuç alabiliyorum. Buradaki akışı  "HttpAnalyzer" ile takip ettim.
ıdHTTP Header kısmını buraya göre düzenlemek istedim fakat istediğim sonucu elde edemedim.
ContentType  kısmı düzenlediğim şekilde oluşmuyor ve Connection kısmı gözükmüyor.

"(Status-Line):HTTP/1.1 500 Internal Server Error" hatasını alıyorum.

Bu kısımda takılmış durumdayım.


SOAP-UI sorgusundaki header yapısı
rOE1dB.png


Bu kısımda kod yapısı
var
 Strm    :TStringStream;
 sSSL    :TIdSSLIOHandlerSocketOpenSSL;
 sIdHTTP :TIdHTTP;
begin
 Try
   Memo1.Clear;
   sIdHTTP :=TIdHTTP.Create(Self);
   sSSL    := TIdSSLIOHandlerSocketOpenSSL.Create(nil);

   sIdHTTP.Request.Clear;
   sIdHTTP.IOHandler             := sSSL;
   sIdHTTP.Request.ContentType   :='application/soap+xml;charset=UTF-8;action='+'https://services.XXXXXXXXXX';//
   sIdHTTP.Request.Connection    :='Keep-Alive';
   sIdHTTP.Request.AcceptEncoding:='gzip,deflate';
   sIdHTTP.Request.UserAgent     :='Apache-HttpClient/4.1.1 (java 1.5)';
   sIdHTTP.Request.Host          :='services.XXXXXX';
   Strm := TStringStream.Create(ExtractFilePath(application.ExeName)+ 'SorguXML.xml');
   Memo1.Lines.Add(sIdHTTP.Post('https://services.XXXXXX/XXXXX/service.asmx',Strm));
 Finally
   Strm.Free;
   FreeAndNil(sIdHTTP);
 End;
end;

Uygulamayı takibe alıp kodu çalıştırdığımdaki header yapısı
76AD8m.png
Cevapla
#2
Merhaba,

Gözden kaçan küçük bir detaydan dolayı hata alıyormuşum  Angry

Sorun buradaki kısım :/
"Strm := TStringStream.Create(ExtractFilePath(application.ExeName)+ 'SorguXML.xml');"
Meğer dosya yolunu gönderiyormuşum. Uzun süre uğraş verince böyle oluyor sanırım.
Strm içerisini gerekli XML yapısını yükleyerek tekrar yolladığımda istediğim sonucu alabilmiş oldum.

bu yöntem kullanılarak WSDL import etmeden istenen Header kısımlarını manuel ekleyerek ıdHTTP ile post ederek Web servisi kullanabiliriz.
Son düzenlediğim hali aşağıdaki gibidir.

var
 Strm    :TStringStream;
 sSSL    :TIdSSLIOHandlerSocketOpenSSL;
 sIdHTTP :TIdHTTP;
begin
 Try
   Memo1.Clear;
   sIdHTTP :=TIdHTTP.Create(Self);
   sSSL    := TIdSSLIOHandlerSocketOpenSSL.Create(nil);

   sIdHTTP.Request.Clear;
   sIdHTTP.IOHandler             := sSSL;
   sIdHTTP.ProtocolVersion       :=pv1_1;
   sIdHTTP.Request.ContentType   :='application/soap+xml;charset=UTF-8;action="https://services.XXXXXXXXXXXXXXXXXX"';
   sIdHTTP.Request.Connection    :='Keep-Alive';
   sIdHTTP.Request.AcceptEncoding:='gzip,deflate';
   sIdHTTP.Request.UserAgent     :='Apache-HttpClient/4.1.1 (java 1.5)';
   sIdHTTP.Request.Host          :='services.XXXXXXXXX';
   Strm := TStringStream.Create(Memo2.Text);
   Memo1.Lines.Add(sIdHTTP.Post('https://services.XXXXXXXXXXXXXXXXX.asmx',Strm));
 Finally
   Strm.Free;
   FreeAndNil(sIdHTTP);
 End;
end;

SSL için Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. adresinden openssl-0.9.8r-i386-win32-rev2.zip kütüphanesini indirerek exe nin bulunduğu dizine eklendi.
Memo2.text içerisinde XML şablon yapısı bulunmaktadır.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Personel Yıllık İzin Hakediş Hesaplama Hakkında bkantur 2 142 04-10-2019, Saat: 18:15
Son Yorum: uparlayan
  [ÇÖZÜLDÜ] Rapor Baskısında 0 değerleri yazılmasın wiseman 2 115 01-10-2019, Saat: 18:04
Son Yorum: wiseman
  [ÇÖZÜLDÜ] fast report dil hatası wiseman 6 237 25-09-2019, Saat: 14:29
Son Yorum: wiseman
  Moduler Programlama Hakkinda TheEAK 4 243 18-09-2019, Saat: 10:43
Son Yorum: TheEAK
  ÇÖZÜLDÜ-timer kullanmadan saat kontrolü mümkünmü? sadikacar60 3 212 10-09-2019, Saat: 22:19
Son Yorum: sadettinpolat



Konuyu Okuyanlar: 1 Ziyaretçi