TidHTTP ile dönen içerikteki resimleri almak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

TidHTTP ile dönen içerikteki resimleri almak

Mesaj gönderen vkamadan »

Merhabalar ,

TidHTTP ile captcha bilgiside isteyen bir form sayfasını get metodu ile çağırıyorum, captcha resmini TidHTTP ile başlattığım session bilgisini kaybetmeden (yani ilgili captcha resminin linkini alıp TWebBrowser gibi url görüntüleyicden yardım almadan) ilgili resimi kullanıcıya göstermek istiyorum, TidHTTP ile get ettiğim sayfanın üstünde yer alan resimlerde geliyormu Stream olarak felan, yani amacım aynı session bilgisini kaybetmemek.
Volkan KAMADAN
www.polisoft.com.tr
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: TidHTTP ile dönen içerikteki resimleri almak

Mesaj gönderen emin_as »

IdHttp resimleri değil, sitenin kaynak kodunu getiriyor.
Gelecek resmin adını biliyorsan, o resmi idhttp ile direk stream a kaydedebilirsin.
Resmin adını kaynak koddan alabiliyorsan, önce kaynak kodu alıp, daha sonra resmi indirebilirsin.

Kod: Tümünü seç

     memStream:=TmemoryStream.create;
    try
      idHttp1.Get('http://www.sitem.com/resim.jpg', memStream);
      memStream.Position:=0;
      Jpg1.LoadFromStream(memstream);
   finally
      memstream.Free;
   end;
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: TidHTTP ile dönen içerikteki resimleri almak

Mesaj gönderen vkamadan »

merhabalar ,

Kod: Tümünü seç

  response := TMemoryStream.Create();
  intJpg := TJPEGImage.Create;
  idHttp1.Get('http://xxxxxxx/Captcha.jpg?p=1&s=1267878837513', response);
  response.Position := 0;

  intJpg.LoadFromStream(response);

  intJpg.SaveToFile('captcha.jpg');
bu şekilde denediğimde "Jpeg Error #53" hatası alıyorum ilgili sayfa ekrana her çağrıldığında farklı bir captcha resimi üretiliyor bunu stream olarak almak istiyorum kod mantıklı ama çalıştıramadım.
Volkan KAMADAN
www.polisoft.com.tr
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Re: TidHTTP ile dönen içerikteki resimleri almak

Mesaj gönderen aLonE CoDeR »

LoadFromStream yerine Assign kullanarak çözüme gidilebilir. Ya da browser ile gösterilebilir..
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: TidHTTP ile dönen içerikteki resimleri almak

Mesaj gönderen emin_as »

Parametre geçmek gerekebilir
Aşagıdaki kodu deneyebilir misin?
Site adresi olmadıgı için ben kontrol edemedim.

Kod: Tümünü seç

s1: TStringlist;
s1:=TStringlist.Create;
s1.Add('p=1');
s1.Add('s=123...');
idHttp1.Post('http://siteadi/captcha.jpg',s1,response);
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: TidHTTP ile dönen içerikteki resimleri almak

Mesaj gönderen emin_as »

Test ettim parametre farketmiyor, her türlü çalışıyor.
Bİr ihtimal gelen resim jpg değil, png olabilir.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  s1: Tstringlist;
  res1 : TmemoryStream;
begin
  s1:=Tstringlist.Create;
  res1:=TmemoryStream.Create;
  s1.Add('m=IZMIR');  s1.Add('basla=1');   s1.Add('bitir=5');   s1.Add('rC=111');  s1.Add('rZ=fff');
  try
    idhttp1.Get('http://www.dmi.gov.tr/sunum/tahmin-show-1.aspx?m=ANKARA&basla=1&bitir=5&rC=111&rZ=fff',res1);
//    idhttp1.post('http://www.dmi.gov.tr/sunum/tahmin-show-1.aspx',s1,res1);
    res1.SaveToFile('e:\test1.png');
  finally
    res1.Free;
    s1.Free;
  end;
end;
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: TidHTTP ile dönen içerikteki resimleri almak

Mesaj gönderen vkamadan »

Merhabalar ,
Cevaplarınız çin teşekkürler , almk istediğim resim linki

Kod: Tümünü seç

http://www.tramer.org.tr/tramer/Captcha.jpg?p=1&s=1267708761456
bu link her çağrıldığında yeni bir captcha üretiliyor ve ilgili session ile ilişkilendirliyor, dolayısıyla TWebBrowser ile gösterdiğimde bütün işleri TWebBrowser ile devam ettirmem gerekiyor, benim için en hayırlısı idHTTP ile bu adrese gidip, sonucu stream olarak kaydetmek ve kullanıcıya göstermek, sonrasında idHTTP nin açtığı sessiondan işlemlere devam etmek.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: TidHTTP ile dönen içerikteki resimleri almak

Mesaj gönderen vkamadan »

Merhabalar ,
@emin_as , sizin son örneğinizdeki gibi herhangi bir TJpeg kullanmadan doğrudan stream ı kaydettiğimde sorun olmadı alabildim.

İlginiz ve yardımlarınız için tekrar teşekkür ederim.

İyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
fox
Üye
Mesajlar: 78
Kayıt: 24 Nis 2006 08:28

Re: TidHTTP ile dönen içerikteki resimleri almak

Mesaj gönderen fox »

Peki yenilenen resim gelmedimi doğru resim geldiğinden eminmisiniz? Ben gelen veriyi okuduktan sonra gönderince hatalı gönderilme diye mesaj alıyorum
Kullanıcı avatarı
kenanbayrak
Üye
Mesajlar: 2
Kayıt: 10 Ara 2004 02:10

Re: TidHTTP ile dönen içerikteki resimleri almak

Mesaj gönderen kenanbayrak »

Merhaba

IdHTTP ile dönen içerikte html kodundaki ismi bilinen bir text box un içeriği nasıl alınır.
Örnek bir şirkette çelışan işçilerden aynı ad, aynı soyadı olan personelin sicil numaralarını almak istiyorum Delphi 7 ile edit boxlara yazdığım ad,soyad a göre web sayfasında sicil no sorgulatıyorum,sonuç webde görülüyor ancak sıkan sonucu kendi exe dosyamdaki edit boxa alamıyorum
Yardımcı olursanız memnun olurum
Hoşça kalın
Cevapla