Komut dosyaları: WININET_TEST

 

WININET_TEST:

wininet.dll kütüphanesinin fonksiyonları kullanılarak İnternetten sayfanın (dosyanın) nasıl indirileceğini gösteren basit bir örnek.

WININET_TEST

Yazar: MetaQuotes

 

Bir dosyanın okunmadan önce uzunluğunu bilmenin mümkün olup olmadığını söyleyebilir misiniz? Bu, büyük hacimler, yavaş hızlar durumunda yüklenen verilerin yüzdesi hakkında bir tahmin yapabilmek içindir.

 
gdtt:

Bana bir dosyanın okunmadan önce uzunluğunu bilmenin mümkün olup olmadığını söyleyebilir misiniz? Bu, büyük hacimler, yavaş hızlar durumunda indirilen verilerin yüzdesini tahmin edebilmek içindir.

Sanırım yapabilirsin. ve bunu wininet.dll'in msdn açıklamasında bulacaksın.

 
gdtt:

Bir dosyanın okunmadan önce uzunluğunu bilmenin mümkün olup olmadığını söyleyebilir misiniz? Bu, büyük hacimler, yavaş hızlar durumunda yüklenen verilerin yüzdesini tahmin edebilmek içindir.

GET isteğinden önce /HEAD gönderin
 
sergeev:

Sanırım yapabilirsin. ve bunu wininet.dll'in msdn açıklamasında bulacaksın.


Sanırım wininet.dll kullanımının tam olarak açıklandığı bir makale için iyi bir konu olurdu

 
Ben varım! Çok faydalı bir makale olacak.
 
gdtt:

Bir dosyanın okunmadan önce uzunluğunu bilmenin mümkün olup olmadığını söyleyebilir misiniz? Bu, büyük hacimler, yavaş hızlar durumunda indirilen verilerin yüzdesi hakkında bir tahmin yapabilmek içindir.

Sunucu içeriğin uzunluğunu bildirirse bir olasılık vardır.

İstek hakkında bilgi almak için wininet.dll'deki HttpQueryInfo işlevini kullanabilirsiniz - bu işlev gerekli bilgileri belirtilen diziye dize biçiminde döndürür.

Kullanım örneği:

import bölümüne bir açıklama ekleyin:

int HttpQueryInfoW(int hRequest,int dwInfoLevel,uchar &lpvBuffer[],int &lpdwBufferLength,int &lpdwIndex);

ayrıca ekleyin

#define HTTP_QUERY_CONTENT_LENGTH 5

daha sonra kodda InternetOpenUrlW'yi çağırdıktan ve hURL'yi aldıktan sonra kodu eklemeniz gerekir:

   int BufLen=2048;
   int ind=0;
   uchar buf0[2048];
   string s="";
   int ContentSize_HttpQueryInfoW=0;
   int iRes;
   
   iRes=HttpQueryInfoW(hURL,HTTP_QUERY_CONTENT_LENGTH,buf0,BufLen,ind);
   if(iRes<=0)
     {
      Print("Error in call of HttpQueryInfoW()");
     }
   else
     {
      s="";
      for(int k=0;k<BufLen;k++) { s=s+CharToString(buf0[k]);}
      Print("HTTP_QUERY_CONTENT_LENGTH:",s);
      if (StringLen(s)>0) ContentSize_HttpQueryInfoW=StringToInteger(s);
      Alert("İçerik boyutu=",ContentSize_HttpQueryInfoW);
     }     

yandex.ru'dan test örneğimizde, indirilen dosyanın boyutuna karşılık gelen "Content size= 44649" alırız. yani indirme başlamadan önce (InternetReadFile) içeriğin uzunluğunu biliyoruz.

 

Bu özellik komut dosyasının mevcut sürümüne eklendi.

 

Emeğiniz için teşekkürler!

Mükemmel çalışıyor!

 

Çalıştırmaya çalıştığımda metatrader ölümcül bir hata ile kapanıyor. Herhangi bir çözüm var mı?

 
Son MT5 güncellemesinden önce wininet'in çalıştığını buldum. Ama hala tekrar çalışmasını sağlamak için bir çözüm bulamıyorum. bu sorunun üstesinden nasıl geleceğinizi bulursanız lütfen bana bildirin.