Konuyu Paylaş : facebook gplus twitter

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  Confused
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 Giriş yap veya Üye Ol 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

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Question SFTP Hakkında elixir84 1 56 22-06-2018, Saat: 15:48
Son Yorum: SimaWB
  [ÇÖZÜLDÜ]-cxDBPivotGrid Seçili Satır Alan Değeri Alma hi_selamlar 2 94 21-06-2018, Saat: 10:40
Son Yorum: hi_selamlar
  Veritabanı hakkında mehmetalpgozbasi 4 193 19-06-2018, Saat: 12:57
Son Yorum: mehmetalpgozbasi
  Firedac Hakkında Tuğrul HELVACI 8 575 01-06-2018, Saat: 00:33
Son Yorum: nguzeller
  winusb protokolü hakkında yardım seci20 1 95 31-05-2018, Saat: 10:26
Son Yorum: SimaWB



Konuyu Okuyanlar: 1 Ziyaretçi