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
  Çözüldü. Fastreport ta çalışma anında dataset atama cinarbil 2 95 11-07-2019, Saat: 17:55
Son Yorum: cinarbil
  Çözüldü-sql kodu dengesiz çalışıyor sadikacar60 4 228 11-07-2019, Saat: 14:28
Son Yorum: mcuyan
  IDE çoklu monitör kullanımı hakkında adelphiforumz 2 91 10-07-2019, Saat: 12:45
Son Yorum: adelphiforumz
  GarantiBBVA SFTP işlemleri hakkında adelphiforumz 4 181 09-07-2019, Saat: 10:43
Son Yorum: r3n4m3
  [ÇÖZÜLDÜ] WebDav ile Bulut Sunucuya Dosya Yükleme theSinan 4 322 08-07-2019, Saat: 15:42
Son Yorum: r3n4m3



Konuyu Okuyanlar: 1 Ziyaretçi