tanımladığınız sorunun doğası gereği, B600 kullandığınızı tahmin ediyorum >
bu nedenle , örneğin UNICODE kullanarak kodunuzu uyarlamanız gerekir.
int InternetOpen W (...
ve değil (ANSI)
int InternetOpen A (...
Herkese merhaba,
Bu konunun defalarca tartışıldığını biliyorum. Ancak bu konuyla ilgili bulduğum tüm makaleler ne yazık ki çok karmaşıktı veya çok eski oldukları için hata mesajı veriyorlardı. Bu nedenle, basit bir POST/GET isteği yapan bir komut dosyası oluşturamadım.
Bu yüzden, sadece bir sunucuya POST ve GET isteği göndermek istiyorum. Hedef dosya basit bir php dosyasıdır.
Bu, https://www.mql5.com/en/code'a dayanan ürettiğim ilk test komut dosyam:
Maalesef sonuç olarak "0" alıyorum, bu da isteğin başarılı olmadığı anlamına geliyor. Ama nedenini bulamıyorum.
Umarım bana yardım edebilirsin.
Teşekkürler,
Alex
https://www.mql5.com/en/forum/149321
TAMAM. Hızlı cevap için teşekkürler. Henüz test etmedim ama lütfen biraz daha ayrıntı verebilir misiniz? Sorduğum için üzgünüm ama B600 nedir? Ayrıca, http://msdn.microsoft.com/en-us/library/windows/desktop/aa385098(v=vs.85).aspx adresinde "InternetOpenW" veya "InternetOpenA" işlevleri için belgeler bulamıyorum.
"...A" ve "...W" nereden geliyor?
Yardım için teşekkürler.
ama B600 nedir?
sürüm 600 ve üzeri (MetaTrader) = 600 ve üzeri sürüm = B600 >
"...A" ve "...W" nereden geliyor?
umarım okuyabilirsin
Sağladığınız bağlantıdaki aynı sayfada ( altta ):
Unicode ve ANSI adları InternetOpenUrlW (Unicode) ve InternetOpenUrlA (ANSI)
Yani aslında POST/GET isteği için "InternetOpenUrlW" işlevine hiç ihtiyacım olmadığını düşünüyorum.
Bu hala çalışmayan mevcut koddur :-( :
#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 InternetCloseHandle( int ); int HttpOpenRequestA ( int , string , string , string , string , string & AcceptTypes[], int , int ); bool HttpSendRequestW( int , string , int , string , int ); #import int OnInit () { string headers = "Content-Type: application/x-www-form-urlencoded" ; string data = "" ; string acceptTypes[ 1 ] = { "*/*" }; int HttpOpen = InternetOpenW( "HTTP_Client_Sample" , 1 , NULL , NULL , 0 ); int HttpConnect = InternetConnectW(HttpOpen, "http://localhost/tradex" , 7777 , NULL , NULL , 3 , 0 , 1 ); int HttpRequest = HttpOpenRequestA(HttpConnect, "POST" , "/index.php" , "HTTP/1.1" , NULL , acceptTypes, 0 , 1 ); string result = HttpSendRequestW(HttpRequest, headers, StringLen (headers), data, StringLen (data)); int read[ 1 ]; Print ( "This is the POST result: " + result); return ( 0 ); }
yukarıda UNICODE için kodunuzu uyarlamanız gerektiğini yazdım ve size sadece bir örnek verdim ve yine de uyarlamanız gereken şeyleri bıraktınız .
int HttpOpenRequest A ( int , string , string , string , string , string & AcceptTypes[], int , int );
ve şimdiden söylüyorum, hepsi bu değil , dahası var
merhaba qjol,
Bir önceki yazımda, "HttpOpenRequest A " öğesini "HttpOpenRequest W " olarak değiştirmenin " Wininet.dll'de 0x0000007B'ye erişim ihlali okundu" hatasına neden olduğunu yazmıştım.
UNICODE olarak değiştirdiğim diğer tüm işlevler .
Yanlış anladıysam özür dilerim ama basit bir POST/GET isteği için başka ne eksik veya yanlış?
merhaba qjol,
çok yararlı olan bağlantı için teşekkürler. Bir URL'den veri almanın işe yaradığını görebiliyorum ama yine de veriyi nasıl POST yapacağımı bilmiyorum. Komut dosyanız " HttpOpenRequestW" işlevini tanımlar ancak kullanmaz. Ayrıca, komut dosyası yalnızca harika çalışan verileri alır.
Ama yine de verileri nasıl POST yapabilirim? " HttpOpenRequestW " ile çalışması gerekir, ancak hata mesajını almadan önce zaten yayınladığım gibi: " 'Wininet.dll'de 0x0000007B'ye erişim ihlali okundu" ve " HttpOpenRequestA" açıkça çalışmıyor.
Umarım yardımcı olabilirsiniz.
kodunuzu kontrol etmeye karar verdim ve düzelttim ama sonuç = yanlış olduğundan, kontrol ettim ve 12005 hata kodunu alıyorum ve microsoft'un hata kodu listesine göre bu şu anlama geliyor
ERROR_INTERNET_INVALID_URL
12005
URL geçersiz.
#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 & 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 acceptTypes[ 1 ] = { "*/*" }; int HttpOpen = InternetOpenW( "HTTP_Client_Sample" , 1 , "" , "" , 0 ); int HttpConnect = InternetConnectW(HttpOpen, "http://localhost/tradex" , 7777 , "" , "" , 3 , 0 , 1 ); int HttpRequest = HttpOpenRequestW(HttpConnect, "POST" , "/index.php" , "HTTP/1.1" , "" , acceptTypes, 0 , 1 ); bool result = HttpSendRequestW(HttpRequest, headers, StringLen (headers), data, StringLen (data)); Alert ( "Last MSDN Error =: " , kernel32::GetLastError()); int read[ 1 ]; // not used Print ( "This is the POST result: " , result); if (HttpOpen > 0 ) InternetCloseHandle(HttpOpen); if (HttpRequest > 0 ) InternetCloseHandle(HttpRequest); return ;
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Herkese merhaba,
Bu konunun defalarca tartışıldığını biliyorum. Ancak bu konuyla ilgili bulduğum tüm makaleler ne yazık ki çok karmaşıktı veya çok eski oldukları için hata mesajı veriyorlardı. Bu nedenle, basit bir POST/GET isteği yapan bir komut dosyası oluşturamadım.
Bu yüzden, sadece bir sunucuya POST ve GET isteği göndermek istiyorum. Hedef dosya basit bir php dosyasıdır.
Bu, https://www.mql5.com/en/code'a dayanan ürettiğim ilk test komut dosyam:
Maalesef sonuç olarak "0" alıyorum, bu da isteğin başarılı olmadığı anlamına geliyor. Ama nedenini bulamıyorum.
Umarım bana yardım edebilirsin.
Teşekkürler,
Alex