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  :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 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
  Http post etme arsl01 7 303 14-09-2018, Saat: 19:52
Son Yorum: arsl01
  [ ÇÖZÜLDÜ ] RAD Studio Community Edition ? BY-HAYALET 3 168 11-09-2018, Saat: 10:20
Son Yorum: BY-HAYALET
  IDHttp error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure hata burakb44 12 368 02-09-2018, Saat: 23:37
Son Yorum: burakb44
Shocked Çoklu Dil Desteği Hakkında SercanTEK 10 304 28-08-2018, Saat: 13:24
Son Yorum: uparlayan
Exclamation Derleyici Direktifleri Hakkında, yhackup 8 3.224 22-08-2018, Saat: 19:52
Son Yorum: boreas



Konuyu Okuyanlar: 1 Ziyaretçi