mql4 ile basit POST/GET HttpRequest - sayfa 3

 
coolex :

Değişikliği yaparsam "'&' - başvuru kullanılamıyor" hata mesajını alıyorum.


Bu sadece bir ipucuydu, bir rehber değil.
 
hangi MT4 yapısını kullanıyorsunuz?
 

Build 610 kullanıyorum.

 
coolex :

Build 610 kullanıyorum.


Ayrıca kodu kullanmaya çalışıyorum ve bana yapı 610 ile "Erişim İhlali" hataları veriyor.

Bu gönderiye göre (https://www.mql5.com/en/articles/276) MQL5'teki kullanıcılar aynı sorunu yaşıyor ....

B&KR.

 

B617 kullanıyorum ve gayet iyi çalışıyor, kontrol etmek için B610'u kuracağım

lütfen sabırlı olun ;-)
 

tamam başlıyoruz (B610 için düzeltildi)

 #import   "Wininet.dll"
   int InternetOpenW( string , int , string , string , int );
   int InternetConnectW( int , string , int , string , string , int , int , int ); 
   int InternetOpenUrlW( int , string , string , int , int , int );
   int InternetReadFile( int , string , int , int & OneInt[]);
   int InternetCloseHandle( int ); 
   int HttpOpenRequestW( int , string , string , string , string , char & AcceptTypes[], int , int );
   bool HttpSendRequestW( int , string , int , string , int );
#import
#import "kernel32.dll"
int GetLastError( void );
#import


   string headers = "Content-Type: application/x-www-form-urlencoded" ;
   string data = "" ;
   string Types = "" ;
   char acceptTypes[];
   StringToCharArray (Types, acceptTypes);
   int HttpOpen = InternetOpenW( " " , 0 , " " , "" , 0 );  
   int HttpConnect = InternetConnectW(HttpOpen, "www.forexfactory.com" , 80 , "" , "" , 3 , 0 , 0 );
   int HttpRequest = HttpOpenRequestW(HttpConnect, "GET" , "ff_calendar_thisweek.xml" , "" , "" , acceptTypes, 0 , 0 );   
   bool result = HttpSendRequestW(HttpRequest, headers, StringLen (headers), data, StringLen (data));
   Alert ( "Last MSDN Error =: " , kernel32::GetLastError());
   int read[ 1 ];
   Print ( "This is the POST result: " , result);
   InternetCloseHandle(HttpOpen);
   InternetCloseHandle(HttpRequest);
 

ve bu örnek işe yarıyor

 #import   "Wininet.dll"
   int InternetOpenW( string , int , string , string , int );
   int InternetConnectW( int , string , int , string , string , int , int , int ); 
   int InternetOpenUrlW( int , string , string , int , int , int );
   int InternetReadFile( int , string , int , int & OneInt[]);
   int InternetCloseHandle( int ); 
   int HttpOpenRequestW( int , string , string , string , string , string , int , int );
   bool HttpSendRequestW( int , string , int , string , int );
#import
#import "kernel32.dll"
int GetLastError( void );
#import


   string headers = "Content-Type: application/x-www-form-urlencoded" ;
   string data = "" ;
   int HttpOpen = InternetOpenW( " " , 0 , " " , "" , 0 );  
   int HttpConnect = InternetConnectW(HttpOpen, "www.forexfactory.com" , 80 , "" , "" , 3 , 0 , 0 );
   int HttpRequest = HttpOpenRequestW(HttpConnect, "GET" , "ff_calendar_thisweek.xml" , "" , "" , data, 0 , 0 );   
   bool result = HttpSendRequestW(HttpRequest, headers, StringLen (headers), data, StringLen (data));
   Alert ( "Last MSDN Error =: " , kernel32::GetLastError());
   int read[ 1 ];
   Print ( "This is the POST result: " , result);
   InternetCloseHandle(HttpOpen);
   InternetCloseHandle(HttpRequest);
 

İYİ! Her iki örnek çalışma. Çok teşekkür ederim.

 
sergiensergien :

Bu gönderiye göre (https://www.mql5.com/en/articles/276) MQL5'teki kullanıcılar aynı sorunu yaşıyor ....



hatayı almalarının farklı bir nedeni var ama işte MQL4 yani...
 
coolex :

İYİ! Her iki örnek çalışma. Çok teşekkür ederim.


bence doğru parametreleri (veya hepsini) kullanmalısın

 #define INTERNET_FLAG_PRAGMA_NOCACHE   0x00000100    // no caching of page
#define INTERNET_FLAG_KEEP_CONNECTION   0x00400000    // keep connection
#define INTERNET_FLAG_RELOAD           0x80000000    // get page from server when calling it

int HttpRequest = HttpOpenRequestW(HttpConnect, "GET" , "ff_calendar_thisweek.xml" , "" , "" , 0 , 
INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_RELOAD|INTERNET_FLAG_PRAGMA_NOCACHE, 0 );