"MQL5'te WinInet'i Kullanma. Bölüm 2: POST İstekleri ve Dosyalar" makalesi için tartışma

 

Yeni makale MQL5'te WinInet'i Kullanma. Bölüm 2: POST İstekleri ve Dosyalar yayınlandı:

Bu makalede, HTTP isteklerini kullanarak İnternet ile çalışma ve sunucu ile bilgi alışverişi yapma prensiplerini incelemeye devam edeceğiz. Burada CMqlNet sınıfının yeni işlevleri, formlardan bilgi gönderme yöntemleri ve POST isteklerini kullanarak dosya gönderme yöntemleri ve ayrıca Çerezleri kullanarak oturum açtığınız web sitelerindeki yetkilendirme açıklanmaktadır.

Bir önceki "İnternet üzerinden Terminaller Arası Veri Alışverişi için WinInet.dll Kullanımı" adlı makalede, kitaplık ile çalışmayı, web sayfalarını açmayı, GET isteklerini kullanarak bilgi göndermeyi ve almayı öğrenmiştik.

Bu makalede, şunları yapmayı öğreneceğiz:

  • Bir sunucuya basit POST istekleri oluşturma ve gönderme;
  • multipart/form-data temsil yöntemini kullanarak dosyaları bir sunucuya gönderme;
  • Çerezlerle çalışma ve oturum açma bilgilerinizi kullanarak web sitelerindeki bilgileri okuma.

Daha önce olduğu gibi, yerel bir proxy sunucusu kurmanızı şiddetle tavsiye ediyorum Charles; bu, çalışmanız ve sonraki denemeleriniz için gerekli olacaktır.

Yazar: ---

 

Merhaba Alex,

Güzel makale - 'Bölüm 3' için bir isteğim var: XML-RPC istemci iletişimi (ve mümkünse sunucu).

Cheerz

 

Aşağıdaki deyim çalıştırıldığında sistem çöküyor, bu nasıl çözülmelidir?

hConnect=InternetConnectW(hSession, aHost, aPort, aUser, aPass, aService, 0, 0);

Hata: '......ex5' içinde 0x0000000000001F94'e erişim ihlali okundu

 

Satır 161'de küçük bir hata var. Bu satır şöyle olmalı:

else StringToCharArray(req.stData, data, 0, StringLen(req.stData));

bunun nedeni terminal 0'ın diziye kopyalanması ve HttpSendRequestW'nin terminal 0'ı (ekstra bir karakter gibi) son post var değerine göndermesidir. Örneğin eğer veriniz şu ise:

var1=value1&var2=value2

Web sayfanızda value1 ile ilişkili var1 ve value2\0 ile ilişkili var2 alacaksınız.

Bu harika bir makale. Paylaştığınız için teşekkürler.


Saygılarımla

 
son MT5 yükseltmesinden sonra wininet kullanılamıyor, ir bir erişim ihlali hatası oluşturuyor. Bu hatanın üstesinden gelmek için herhangi bir öneriniz var mı? Çözümler? Başarısız bir şekilde deniyorum.
 
Erişim ihlali hatası çözüldü ancak POST istekleri artık çalışmıyor. Görünüşe göre bir uchar dizisindeki veriler dll işlevine doğru şekilde gönderilmiyor.
 
mundoforex:

Erişim ihlali hatası çözüldü ancak POST istekleri artık çalışmıyor. Görünüşe göre bir uchar dizisindeki veriler dll işlevine doğru şekilde gönderilmiyor.
Bir süre sonra hala erişim ihlali hataları alıyorum.
 
Neden kimse bu sorunla ilgilenmiyor?
 
mundoforex:

Neden kimse bu sorunu umursamıyor?
Ben de seninle aynı fikirdeyim. Umutsuzca bir çözüm bekliyorum ama kimse cevap vermiyor. Yöneticilerin bana söylediği gibi son güncellemenin sorunu çözeceğini düşündüm, ancak güncellemeden sonra bana bir daha asla cevap vermediler :(
 

Ayrıca bu nesne sınıfı ile bazı Erişim İhlali hataları aldım. Sorun, HttpOpenRequestW işlevinin çağrısında NULL işaretçi olarak '0' kullanılmasıydı. Çağrıyı değiştirmeyi deneyin

---   hRequest=HttpOpenRequestW(hConnect, req.stVerb, req.stObject, Vers, nill, 0, INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_RELOAD|INTERNET_FLAG_PRAGMA_NOCACHE, 0); 

bir çağrı ile:

+++   hRequest=HttpOpenRequestW(hConnect, req.stVerb, req.stObject, Vers, NULL, NULL , INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_RELOAD|INTERNET_FLAG_PRAGMA_NOCACHE, 0); 


NULL işaretçisinin yanlış kullanımının MSDN belgelerinde bir çökme nedeni olarak açıkça belirtilmesi komiktir:

Failing to properly terminate the array with a NULL pointer will cause a crash.
HttpOpenRequest function (Windows)
  • msdn.microsoft.com
Creates an HTTP request handle. Syntax Parameters hConnect [in] lpszVerb [in] A pointer to a null-terminated string that contains the HTTP verb to use in the request. If this parameter is NULL, the function uses GET as the HTTP verb. lpszObjectName [in] A pointer to a null-terminated string that contains the name of the target object of the...
 

Profilimden ürünler hakkında bir rapor almaya çalışıyorum ve alamıyorum, neyi yanlış yapıyorum?