Tüm Platformlar için Hızlı Uygulama Geliştirme Kitabı... Delphi
Ön Sipariş Talebinde Bulunan Üyelerimiz
Sipariş Talebinde Bulunan Üyelerimiz

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
idhttp yenileme
#1
idhttp ile ilgili makaleden yola çıkarak , bir siteye bağlanıp veri almayı başarabildim. Fakat orada anlamadığım bir konu var. Aşağıdaki şekilde giriş yaptıktan sonra farklı bir adrese yönleniyorum.  Fakat 3 saniyede bir gelen bilgiyi yenilemek için  IdHTTP.Get('http://deneme')  şeklinde bilgi çekmek istediğimde program kırılıyor. Sebebini anlayamadım. Tekrar idhttp create edip denedim session düştü. Belli aralıklarla yenilemek için ne yapmalıyım hatam nerede ?

function baglan(const username, password: string): string;
var
IdHTTP: TIdHTTP;
Request: TStringList;
begin
try
  Request := TStringList.Create;
  try
     Request.Add('work=login');
     Request.Add('login_user='+username);
     Request.Add('login_pass='+password);
    IdHTTP := TIdHTTP.Create;
    try
      IdHTTP.AllowCookies := True;
      IdHTTP.HandleRedirects := True;
      IdHTTP.Request.ContentType := 'application/x-www-form-urlencoded';
      IdHTTP.Post('http://deneme/src/api.php', Request);
      Result := IdHTTP.Get('http://deneme');
      if StrUtils.ContainsStr(Result, 'GİRİŞ YAP') then //Login başarısız 
        Result := '' else begin
          Result := IdHTTP.Get('http://deneme/salon.html?id=1');
        end;
    finally
     // IdHTTP.Free;
    end;
  finally
    Request.Free;
  end;
except
  Result := '';
end;
end;
Cevapla
#2
"Program Kırılıyor" derken, bir hata mesajı mı alıyorsunuz; eğer öyle ise hata mesajı nedir ? IdHttp'yi Free etmemişsiniz, memory leak var. Ayrıca bir alışkanlık olması açısından belirteyim; create edeceğiniz nesneleri try'ın üstünde tanımlayın. Create silsilesinde bir hata oluşur ise bu durumda nesne oluşmamış oluşur, dolayısı ile Request (sizin örneğiniz için) rastgele bir şey ile dolu olur ve Free edilmesi çok büyük olasılıkla Access Violation hatasına neden olur.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#3
access violation hatası ile kırılıyordu. Bende fonksiyon içinde idhttp yi create ederek kullanmaktan vazgeçip formuma ekledim. Yanlız şöyle bir sorun var, idhttp get ile sayfayı aldığımda , html içerikler geliyor ama Ajax ile üretilen içerikler gelmiyor. Eee şimdi ne yapcaz bu hiç olmadı Smile))
Cevapla
#4
(08-01-2019, Saat: 09:36)CesuR Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Olaccess violation hatası ile kırılıyordu. Bende fonksiyon içinde idhttp yi create ederek kullanmaktan vazgeçip formuma ekledim. Yanlız şöyle bir sorun var, idhttp get ile sayfayı aldığımda , html içerikler geliyor ama Ajax ile üretilen içerikler gelmiyor. Eee şimdi ne yapcaz bu hiç olmadı Smile))

Json tipinde veri almayı deneyin
- Namyelus
WWW
Cevapla
#5
O şekilde de bir deniyeyim üstadım. Umarım olur
Cevapla
#6
Programın nerede kırıldığını göstermeden, size isabetli yanıt vermek çok zor olur. Programın kırıldığı noktada break button'una basıp kod ortamına geçin ve Call Stack'a bakın. Sizin için bundan daha güzel yardımcı olmaz emin olun.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#7
Evet haklısınız. Teşekkürler
Cevapla
#8
"idhttp get ile sayfayı aldığımda , html içerikler geliyor ama Ajax ile üretilen içerikler gelmiyor. "
idhttp webbrowser nesnesi gibi davranmaz, sayfa içersindeki javascprit kodlarını çalıştırmaz, sayfayı render etmez,
sadece soketten aldığı veriyi sana iletir, sayfadaki js kodların ajax isteklerini gönderdiği url vardır,
seninde o url ye manuel idhttp ile istek göndermen gerekir, gerekli parametreler ile,

sorunun pek açıklayıcı değil o yüzden akıl yürütmek zor;
ben idhttp ile, ajax ile istek gönderilen bir url ye istek gönderemiyorum mu diyorsunuz?

session id yi idhttp ile göndermeden ajax isteğinin yapıldığı url, cevap vermiyorda olabilir.
Cevapla
#9
Haklısınız . Şöyle özetliyeyim  idhttp ile siteye bağlanıyor içeriği çekiyorum.  İçerikte  class adı act olan bir div var bu divin içindeki rakam her 5 saniyede bir değişiyor. Amacım her beş saniyede bir buradaki bilgiyi almak. 
PHP Kod:
<div class="act"><span>61</span></div


şu şekilde ne kadar çekersem çekeyim gelen sonuç hiç değişmiyor. Div içinde gelen rakam hep 61 oysa oradaki rakam hep değişiyor.

procedure test;
   var
 get_url: string;
 resp: TMemoryStream;
begin
 get_url := 'http://xxxx/salon.html?id=1';
 resp := TMemoryStream.Create;
 try
   Form1.IdHTTP1.Get(get_url, resp);
   resp.Position := 0; // <-- add this!!
   form1.memo1.Lines.LoadFromStream(resp);
 finally
   resp.Free;
 end;
end;
Cevapla
#10
"Post" metosunu deneyin. "Get", program kapanıp açılmadığı sürece hafızadaki bilgiyi getirir.
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  IDHttp error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure hata burakb44 12 708 02-09-2018, Saat: 23:37
Son Yorum: burakb44
  IdHTTP post arsl01 12 809 10-07-2018, Saat: 08:13
Son Yorum: arsl01
Star ıdHTTP Post hakkında? [Çözüldü] ozcanm 1 572 06-02-2018, Saat: 13:36
Son Yorum: ozcanm
  idHttp "Cloud not load SSL library" Halil Han Badem 6 1.209 31-08-2017, Saat: 15:00
Son Yorum: Halil Han Badem



Konuyu Okuyanlar: 1 Ziyaretçi